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 org.opengion.hayabusa.common.HybsSystem ; 019 import java.util.Map; 020 import java.util.HashSet; 021 import java.util.HashMap; 022 import java.util.LinkedHashMap ; 023 import java.util.Arrays; 024 import static org.opengion.fukurou.util.StringUtil.nval2; 025 026 /** 027 * systemId と lang に対応したコードデータを作?します? 028 * 029 * コードデータは??目(CLM)に対して、?のコー?CODE)を持って?す? 030 * こ??のコードを表示?持つことで、?ル?ンメニュー等?表示??します? 031 * 032 * コードデータを作?する場合?、同??目・コードで、作?区???場合?? 033 * ?大きな作?区?持つコードを使用します? 034 * 作?区?KBSAKU)は、他?リソースと異なり?基本?は使用しません? 035 * これは??常は?単位に作?区?持つべきところを?コード単位でしか 036 * 持てな?ータベ?スの設計になって?為です?アプリケーション側で設定条件? 037 * きちんと管?れ?、作?区?使用できますが、?にはお奨めできません? 038 * 039 * @og.rev 4.0.0.0 (2004/12/31) 新規作? 040 * @og.group リソース管? 041 * 042 * @version 4.0 043 * @author Kazuhiko Hasegawa 044 * @since JDK5.0, 045 */ 046 public final class CodeData { 047 private final boolean USE_MULTI_KEY_SELECT = HybsSystem.sysBool( "USE_MULTI_KEY_SELECT" ) ; 048 049 private static final String SPC = ""; 050 051 /** ???タのカラ?号 {@value} */ 052 public static final int CLM = 0 ; 053 public static final int CODE = 1 ; 054 public static final int LNAME = 2 ; 055 public static final int SNAME = 3 ; 056 public static final int CODELVL = 4 ; 057 public static final int CODEGRP = 5 ; 058 public static final int CODE_PARAM = 6 ; 059 public static final int ROLES = 7 ; 060 public static final int SYSTEM_ID = 8 ; 061 public static final int KBSAKU = 9 ; 062 public static final int RSNAME = 10; // 4.3.8.0 (2009/08/01) spanが付かな?前短 063 public static final int MAX_LENGTH = 11; // 5.1.9.0 (2010/08/01) 配?の定義 064 065 private final String column ; // ? 066 private final String[] code ; // コー? 067 private final String[] longLabel ; // コード名称(長) 068 private final String[] shortLabel ; // コード名称(短) 069 private final String[] codelebel ; // コードレベル ("1":option要??"0":optgroup要? 070 private final String[] codeGroup ; // コードグルー?(??グループキーで選別する) 071 private final String[] codeParam ; // コードパラメータ 072 private final String[] roles ; // ロール 073 private final boolean[] isUseFlag ; // 5.1.9.0 (2010/08/01) サブセ?化するとき?有効/無効を指? 074 private final int size ; // コード?目数 075 private final boolean isMultiSelect ; // マルチセレク? 076 private final boolean isUseLebel ; // 5.1.9.0 (2010/08/01) コードレベル機?を利用するかど? 077 private final boolean isUseParam ; // 5.1.9.0 (2010/08/01) パラメータを利用するかど? 078 private final boolean isUseGroup ; // 5.1.9.0 (2010/08/01) コードグループを利用するかど? 079 private final boolean isUseRoleMode ; // 5.1.9.0 (2010/08/01) ロールモードを利用するかど? 080 081 private final RoleMode[] roleModes ; // 4.3.0.0 (2008/07/04) ロールズとモードを管?るオブジェク? 082 private final String[] rawShortLabel; // 4.3.8.0 (2009/08/01) spanが付かな?前短 083 084 /** 085 * 配???の??タを?に、CodeDataオブジェクトを構築します? 086 * こ?コンストラクタは、他?パッケージから呼び出せな??? 087 * パッケージプライベ?トにしておきます? 088 * こ?コンストラクタは、?スタリソースファイルを想定して?す? 089 * 090 * @og.rev 5.1.9.0 (2010/08/01) 新規追? 091 * 092 * @param clm カラ? 093 * @param data CLM,CODE,LNAME,SNAME,CODELVL,CODEGRP,CODE_PARAM,ROLES,SYSTEM_ID,KBSAKU,RSNAMEの?の??配?を?? 094 * @param useFlag 使用フラグ配?(サブセ?化するとき?有効/無効を指? 095 */ 096 CodeData( final String clm, final Map<String,String[]> data , final boolean[] useFlag ) { 097 this( clm,data ); 098 099 if( useFlag != null && size == useFlag.length ) { 100 for( int i=0; i<size; i++ ) { 101 isUseFlag[i] = useFlag[i]; 102 } 103 } 104 } 105 106 /** 107 * 配???の??タを?に、CodeDataオブジェクトを構築します? 108 * こ?コンストラクタは、他?パッケージから呼び出せな??? 109 * パッケージプライベ?トにしておきます? 110 * こ?コンストラクタは、?スタリソースファイルを想定して?す? 111 * 112 * @og.rev 4.3.0.0 (2008/07/04) ロールモード?ルチ対? 113 * @og.rev 4.3.8.0 (2009/08/01) rawShortLabel追? 114 * @og.rev 4.3.8.0 (2009/08/01) グループ機?とパラメータの判定?isUseFlag フラグの追? 115 * @og.rev 5.2.2.0 (2010/11/01) "_" の取り扱??変更 116 * 117 * @param clm カラ? 118 * @param data CLM,CODE,LNAME,SNAME,CODELVL,CODEGRP,CODE_PARAM,ROLES,SYSTEM_ID,KBSAKU,RSNAMEの?の??配?を?? 119 */ 120 CodeData( final String clm, final Map<String,String[]> data) { 121 column = clm; 122 123 size = data.size(); 124 String[] cdKeys = data.keySet().toArray( new String[size] ); 125 126 code = new String[size]; 127 shortLabel = new String[size]; 128 longLabel = new String[size]; 129 codelebel = new String[size]; 130 codeGroup = new String[size]; 131 codeParam = new String[size]; 132 roles = new String[size]; 133 roleModes = new RoleMode[size]; 134 isUseFlag = new boolean[size]; // 5.1.9.0 (2010/08/01) サブセ?フラグの追? 135 rawShortLabel = new String[size]; 136 137 // ?文字目の重?定により、?ルチセレクト?可否を判断します? 138 HashSet<String> set = new HashSet<String>(); 139 boolean isSel = USE_MULTI_KEY_SELECT; // 判定??行う。false なら判定??行わな?? 140 141 // 5.1.9.0 (2010/08/01) コードレベル、コードグループ?パラメータ、ロールの使用可否のフラグ 142 boolean isLbl = false; 143 boolean isPrm = false; 144 boolean isRole = false; 145 boolean isGrp = false; 146 147 for( int i=0; i<size; i++ ) { 148 String[] vals = data.get( cdKeys[i] ); 149 150 code[i] = nval2( vals[CODE],SPC ); 151 152 String lname = nval2( vals[LNAME],SPC ) ; 153 longLabel[i] = lname; 154 155 // null ?ゼロ?? : LNAME をセ? 156 // "_" : ゼロ?? 157 // それ以? : そ?まま SNAME をセ? 158 // shortLabel[i] = nval2( vals[SNAME] ,lname ); 159 shortLabel[i] = nval2( vals[SNAME] ,lname , SPC ); // 5.2.2.0 (2010/11/01) 160 161 codelebel[i] = nval2( vals[CODELVL] , SPC ) ; 162 codeGroup[i] = nval2( vals[CODEGRP] , SPC ) ; 163 codeParam[i] = nval2( vals[CODE_PARAM], SPC ) ; 164 roles[i] = nval2( vals[ROLES] , SPC ) ; 165 166 // 5.1.9.0 (2010/08/01) コードレベル機?と、パラメータの使用判? 167 if( !isLbl ) { isLbl = "0".equals( codelebel[i] ); } 168 if( !isPrm ) { isPrm = ! SPC.equals( codeParam[i] ); } 169 if( !isRole ) { isRole = ! SPC.equals( roles[i] ); } 170 if( !isGrp ) { isGrp = ! SPC.equals( codeGroup[i] ); } 171 172 roleModes[i] = RoleMode.newInstance( roles[i] ); // ロールモー? 173 // rawShortLabel[i] = nval2( vals[RSNAME] , lname ); // 4.3.8.0 (2009/08/01) spanが付かな?前短 174 rawShortLabel[i] = nval2( vals[RSNAME] , lname , SPC ); // 5.2.2.0 (2010/11/01) 175 176 if( isSel && lname.length() > 0 ) { 177 isSel = set.add( lname.substring(0,1) ); // 重?は false 178 } 179 } 180 181 Arrays.fill( isUseFlag,true ); // 5.1.9.0 (2010/08/01) サブセ?フラグの追? 182 183 isMultiSelect = ( USE_MULTI_KEY_SELECT && ! isSel ) ; // flag の反転に注? 184 isUseLebel = isLbl; // 5.1.9.0 (2010/08/01) コードレベル機?を利用するかど? 185 isUseParam = isPrm; // 5.1.9.0 (2010/08/01) パラメータを利用するかど? 186 isUseRoleMode = isRole; // 5.1.9.0 (2010/08/01) ロールモードを利用するかど? 187 isUseGroup = isGrp; // 5.1.9.0 (2010/08/01) コードグループを利用するかど? 188 } 189 190 /** 191 * コードデータのキーを返します? 192 * 193 * @return コードデータのキー 194 */ 195 public String getColumn() { return column; } 196 197 /** 198 * コードデータのキーを返します? 199 * 200 * @param seqNo 表示? 201 * 202 * @return コードデータのキー 203 */ 204 public String getCodeKey( final int seqNo ) { return code[seqNo] ; } 205 206 /** 207 * コードデータの表示名を返します? 208 * 209 * @param seqNo 表示? 210 * 211 * @return コードデータの表示? 212 */ 213 public String getLongLabel( final int seqNo ) { return longLabel[seqNo]; } 214 215 /** 216 * コードデータの短縮表示名を返します? 217 * 218 * @param seqNo 表示? 219 * 220 * @return コードデータの短縮表示? 221 */ 222 public String getShortLabel( final int seqNo ) { return shortLabel[seqNo]; } 223 224 /** 225 * コード階層を返します? 226 * 227 * 通常のメニューは?層?"1" になります?optgroup要?して使用する場合?? 228 * 階層?"0" で登録します? 229 * 230 * @param seqNo 表示? 231 * 232 * @return コード階層( "1":option要??"0":optgroup要?) 233 */ 234 public String getCodeLebel( final int seqNo ) { return codelebel[seqNo]; } 235 236 /** 237 * コードグループに?して?かど?の判定を返します? 238 * 239 * コードグループとは、コードリソースを?用意する代わりにグルーピング 240 * しておくことで、?のコードリソースの代用ができる機?です? 241 * 例えば、管??用と?用のコードリソースがある?合?グルーピングしておけば 242 * ?のコードリソースで使用できます? 243 * なお?引数のgroup ????タベ?ス側の設定??ゼロ??の場合?? 244 * 常に選択されます? 245 * 246 * @og.rev 5.1.9.0 (2010/08/01) ? 247 * 248 * @param seqNo 表示? 249 * @param group グループ文? 250 * 251 * @return ?して?場合?、true 252 */ 253 // public boolean getCodeGroup( final int seqNo,final String group ) { 254 // if( group == null || group.length() == 0 || SPC.equals( codeGroup[seqNo] ) ) { return true; } 255 // 256 // return ( codeGroup[seqNo].indexOf( group ) >= 0 ); 257 // } 258 259 /** 260 * こ?コードが、使用できるかど?を?返します? 261 * 262 * コードグループや、コードリストなどで、サブセ?を作?する場合? 263 * プル?ンなどの選択肢は、制限しますが、レン?ーのラベルは、制限しません? 264 * これは、既存データを表示させる?がある為です? 265 * こ?フラグは?択肢を作?するときに利用します? 266 * 標準状態で作?した場合?、すべての?が?true になって?す? 267 * 268 * @og.rev 5.1.9.0 (2010/08/01) 新規追? 269 * 270 * @param seqNo 表示? 271 * 272 * @return 使用可能な場合?、true 273 */ 274 public boolean isUse( final int seqNo ) { return isUseFlag[seqNo]; } 275 276 /** 277 * コードパラメータを返します? 278 * 279 * コードパラメータは、メニューの??option要?に設定するタグの?を追記します? 280 * ここに記述した??をそのまま追記します? 281 * 282 * @param seqNo 表示? 283 * 284 * @return コードパラメータ 285 */ 286 public String getCodeParam( final int seqNo ) { return codeParam[seqNo]; } 287 288 /** 289 * コードロールを取得します? 290 * 291 * @param seqNo 表示? 292 * 293 * @return コードロール 294 */ 295 public String getRoles( final int seqNo ) { return roles[seqNo]; } 296 297 /** 298 * カラ?ブジェクト?ロールモードを返します? 299 * 300 * @og.rev 4.3.0.0 (2008/07/04) ロールモード?ルチ対? 301 * 302 * @param seqNo 表示? 303 * 304 * @return カラ?ブジェクト?ロールモー? 305 */ 306 public RoleMode getRoleMode( final int seqNo ) { return roleModes[seqNo]; } 307 308 /** 309 * ロールモードを、使用して?かど?を?返します? 310 * 311 * ロールモードを使用して?場合?、ロール制御の処??です? 312 * 使用して?/??事前に判断することで、無?処?削減できます? 313 * 314 * @og.rev 5.1.9.0 (2010/08/01) 新規追? 315 * 316 * @return ロールモードを使用して?場合?、true 317 */ 318 public boolean useRoleMode() { return isUseRoleMode; } 319 320 /** 321 * マッチするコードデータのアドレスを返します? 322 * ??する??タが存在しな??合??1 を返します? 323 * 324 * @param key 検索するキー?? 325 * 326 * @return コードデータのアドレス(なければ?1) 327 */ 328 public int getAddress( final String key ) { 329 int selected = -1; 330 for( int i=0; i<size; i++ ) { 331 if( code[i].equals( key ) ) { 332 selected = i; 333 break; 334 } 335 } 336 return selected; 337 } 338 339 /** 340 * コードデータの配?数を返します? 341 * 342 * @return コードデータの配?数 343 */ 344 public int getSize() { return size; } 345 346 /** 347 * マルチ?キーセレクトを使用するかど?を返します? 348 * true?使用する。false:使用しな?です? 349 * 使用するにした場合でも?ラベルの先??が重?な??合?? 350 * IEの自動選択機?によりセレクト可能なため、JavaScript は出力しません? 351 * 352 * @return 選択リストで、?ルチ?キーセレクトを使用するかど?(true:使用する) 353 */ 354 public boolean useMultiSelect() { return isMultiSelect; } 355 356 /** 357 * コードレベル機?を利用するかど?を返します? 358 * true?使用する。false:使用しな?です? 359 * コードレベル機?を利用する場合?、optgroup タグを?力します? 360 * 設定としては、レベル 0 に??カラ? optgroup として出力します? 361 * 362 * @og.rev 5.1.9.0 (2010/08/01) 新規追? 363 * 364 * @return コードレベル機?を利用するかど?(初期値:false:使用しな? 365 */ 366 public boolean useLebel() { return isUseLebel; } 367 368 /** 369 * パラメータを利用するかど?を返します? 370 * true?使用する。false:使用しな?です? 371 * こ?パラメータは、class 属?として設定される値です? 372 * これを使用して、各種レイアウトなどの?が可能です? 373 * 374 * @og.rev 5.1.9.0 (2010/08/01) 新規追? 375 * 376 * @return パラメータを利用するかど?(初期値:false:使用しな? 377 */ 378 public boolean useParam() { return isUseParam; } 379 380 /** 381 * コードグループを利用するかど?を返します? 382 * true?使用する。false:使用しな?です? 383 * こ?コードグループ?、リソースの引数で設定し?カンマ区???に 384 * 対して、?が設定されて?かど?を返します? 385 * これにより、不要な処?行う?がなくなります? 386 * 387 * @og.rev 5.1.9.0 (2010/08/01) 新規追? 388 * 389 * @return パラメータを利用するかど?(初期値:false:使用しな? 390 */ 391 public boolean useGroup() { return isUseGroup; } 392 393 /** 394 * オブジェクト?識別子として?詳細なコード情報を返します? 395 * キー?ラベル??・の繰り返し??を返します? 396 * 397 * @og.rev 4.1.0.0 (2008/01/18) 新規追? 398 * 399 * @return 詳細なコード情報 400 */ 401 public String toCodeString() { 402 StringBuilder rtn = new StringBuilder( HybsSystem.BUFFER_MIDDLE ); 403 for( int i=0; i<size; i++ ) { 404 String key = code[i] + ":" ; 405 if( ! longLabel[i].startsWith( key ) ) { 406 rtn.append( key ); 407 } 408 rtn.append( longLabel[i] ); 409 rtn.append( " " ); 410 } 411 return rtn.toString().trim(); 412 } 413 414 /** 415 * コードデータの短縮表示?spanタグ無?を返します? 416 * 417 * @og.rev 4.3.8.0 (2009/08/01) 新規追? 418 * 419 * @param seqNo 表示? 420 * 421 * @return コードデータの短縮表示?spanタグ無? 422 */ 423 public String getRawShortLabel( final int seqNo ) { return rawShortLabel[seqNo]; } 424 425 /** 426 * ??コードに限定された CodeData を構築して返します? 427 * こ?サブセ?は、コード?CSV??に基づ?作?されます? 428 * 429 * こ? CodeData は、本当?サブセ?ではなく?プル?ンメニューなどの選択肢のリストを 430 * 制限します?これは、?表示(レン?ー)では、すべての既存?設定?を表示しておく 431 * ?があるからです?そして、変更?エ?ター)に?択肢を制限します? 432 * 433 * 引数の codeCsv が?null,ゼロ??の場合?、???身を返します?(同?? 434 * 435 * @og.rev 5.1.9.0 (2010/08/01) 新規追? 436 * 437 * @param codeCsv ??コードをカンマで連結されたも? 438 * 439 * @return ??コードに限定された CodeData 440 */ 441 public CodeData subsetList( final String codeCsv ) { 442 if( codeCsv == null || codeCsv.length() == 0 ) { 443 return this; 444 } 445 446 String codes = "," + codeCsv + "," ; 447 448 boolean[] useFlag = new boolean[size] ; 449 450 Map<String,String[]> data = new LinkedHashMap<String,String[]>(); 451 for( int adrs=0; adrs<size; adrs++ ) { 452 String key = code[adrs] ; 453 useFlag[adrs] = ( codes.indexOf( "," + key + "," ) >= 0 ) ; // 存在する場合?み、true 454 455 String[] vals = new String[MAX_LENGTH]; 456 vals[CLM] = column ; 457 vals[CODE] = key ; 458 vals[LNAME] = longLabel[adrs] ; 459 vals[SNAME] = shortLabel[adrs] ; 460 vals[CODELVL] = codelebel[adrs] ; 461 vals[CODEGRP] = codeGroup[adrs] ; 462 vals[CODE_PARAM]= codeParam[adrs] ; 463 vals[ROLES] = roles[adrs] ; 464 vals[SYSTEM_ID] = null ; 465 vals[KBSAKU] = null ; 466 vals[RSNAME] = rawShortLabel[adrs] ; 467 468 data.put( key,vals ); 469 } 470 471 return new CodeData( column,data,useFlag ); 472 } 473 474 /** 475 * ??groupに?する限定された CodeData を構築して返します? 476 * こ?サブセ?は、コードグループ?CSV??に?に基づ?作?されます? 477 * 478 * こ? CodeData は、本当?サブセ?ではなく?プル?ンメニューなどの選択肢のリストを 479 * 制限します?これは、?表示(レン?ー)では、すべての既存?設定?を表示しておく 480 * ?があるからです?そして、変更?エ?ター)に?択肢を制限します? 481 * 482 * 引数の group が?null,ゼロ??、また?、?部でグループを使用して???合?? 483 * 自??身を返します?(同?? 484 * 引数の group も??設定?グループも、カンマ区?CSV で?のグループを?できます? 485 * こ?場合?、各グループ??、どれか?でも該当すれ?、使用(true)になります? 486 * 487 * @og.rev 5.1.9.0 (2010/08/01) 新規追? 488 * 489 * @param group ??コードグループ?CSV?? 490 * 491 * @return ??groupに?する限定された CodeData 492 */ 493 public CodeData subsetGroup( final String group ) { 494 if( group == null || group.length() == 0 || !isUseGroup ) { 495 return this; 496 } 497 498 String[] keys = group.split( "," ) ; 499 500 boolean[] useFlag = new boolean[size] ; 501 502 Map<String,String[]> data = new LinkedHashMap<String,String[]>(); 503 for( int adrs=0; adrs<size; adrs++ ) { 504 String cdGrp = codeGroup[adrs]; 505 506 boolean flag = SPC.equals( cdGrp ); 507 if( !flag ) { 508 String grpCsv = "," + cdGrp + "," ; 509 for( int i=0; i<keys.length; i++ ) { 510 flag = ( grpCsv.indexOf( keys[i] ) >= 0 ); 511 if( flag ) { break; } 512 } 513 } 514 515 useFlag[adrs] = flag; 516 517 String[] vals = new String[MAX_LENGTH]; 518 vals[CLM] = column ; 519 vals[CODE] = code[adrs] ; 520 vals[LNAME] = longLabel[adrs] ; 521 vals[SNAME] = shortLabel[adrs] ; 522 vals[CODELVL] = codelebel[adrs] ; 523 vals[CODEGRP] = codeGroup[adrs] ; 524 vals[CODE_PARAM]= codeParam[adrs] ; 525 vals[ROLES] = roles[adrs] ; 526 vals[SYSTEM_ID] = null ; 527 vals[KBSAKU] = null ; 528 vals[RSNAME] = rawShortLabel[adrs] ; 529 530 data.put( code[adrs],vals ); 531 } 532 533 return new CodeData( column,data,useFlag ); 534 } 535 536 /** 537 * ??コードに限定された CodeData を構築して返します? 538 * こ?サブセ?は、ロールの?に基づ?作?されます? 539 * 540 * こ? CodeData は、本当?サブセ?ではなく?プル?ンメニューなどの選択肢のリストを 541 * 制限します?これは、?表示(レン?ー)では、すべての既存?設定?を表示しておく 542 * ?があるからです?そして、変更?エ?ター)に?択肢を制限します? 543 * 544 * 引数の role が?null また?、?部でロールを使用して???合?、???身を返します?(同?? 545 * 546 * @og.rev 5.1.9.0 (2010/08/01) 新規追? 547 * 548 * @param userRole ??ロール(ユーザーロール) 549 * 550 * @return ??コードに限定された CodeData 551 */ 552 public CodeData subsetRole( final RoleMode userRole ) { 553 if( userRole == null || !isUseRoleMode ) { 554 return this; 555 } 556 557 boolean[] useFlag = new boolean[size] ; 558 559 Map<String,String[]> data = new LinkedHashMap<String,String[]>(); 560 for( int adrs=0; adrs<size; adrs++ ) { 561 byte rw = userRole.getAccessBitMode( roleModes[adrs] ); 562 563 useFlag[adrs] = RoleMode.isWrite( rw ) ; // 書き込み可能な場合?み、true 564 565 String[] vals = new String[MAX_LENGTH]; 566 vals[CLM] = column ; 567 vals[CODE] = code[adrs] ; 568 vals[LNAME] = longLabel[adrs] ; 569 vals[SNAME] = shortLabel[adrs] ; 570 vals[CODELVL] = codelebel[adrs] ; 571 vals[CODEGRP] = codeGroup[adrs] ; 572 vals[CODE_PARAM]= codeParam[adrs] ; 573 vals[ROLES] = roles[adrs] ; 574 vals[SYSTEM_ID] = null ; 575 vals[KBSAKU] = null ; 576 vals[RSNAME] = rawShortLabel[adrs] ; 577 578 data.put( code[adrs],vals ); 579 } 580 581 return new CodeData( column,data,useFlag ); 582 } 583 584 /** 585 * longLabel をキーとした、コード?マップを構築して返します? 586 * これは、ラベルからコード?を見つけるのに使用します? 587 * 588 * ラベルからコード?の?きは、同?ベルが存在する場合があり?ので 589 * 参???としてしか、利用できません? 590 * また?ラベルも?短ラベルにたいするコード?マップを作?した??合もありますが? 591 * 現時点では、対応して?せん? 592 * (マップに、短ラベル??も登録すれば、対応可能ですが、ラベルが重?る割合が増えます?) 593 * 主な想定用途?、Rendere で出力したファイルを取り込?きに、ラベルからコードを 594 * 探す?合です? 595 * 596 * @og.rev 5.2.1.0 (2010/10/01) 新規追? 597 * 598 * @return コード?マッ? 599 */ 600 public Map<String,String> makeLabelMap() { 601 Map<String,String> map = new HashMap<String,String>(); 602 603 for( int adrs=0; adrs<size; adrs++ ) { 604 map.put( longLabel[adrs] , code[adrs] ); 605 } 606 607 return map; 608 } 609 610 /** 611 * オブジェクト?識別子として?詳細なコード情報を返します? 612 * 613 * @og.rev 4.1.0.0 (2008/01/18) メソ?修正(改行コード削除) 614 * 615 * @return 詳細なコード情報 616 */ 617 @Override 618 public String toString() { 619 return "column = " + toCodeString() ; 620 621 // StringBuilder rtn = new StringBuilder( HybsSystem.BUFFER_MIDDLE ); 622 // rtn.append( "column :" ).append( column ).append( HybsSystem.CR ); 623 // for( int i=0; i<size; i++ ) { 624 // rtn.append( code[i] ); 625 // rtn.append( " " ); 626 // rtn.append( longLabel[i] ); 627 // rtn.append( " " ); 628 // } 629 // rtn.append( HybsSystem.CR ); 630 // return rtn.toString(); 631 } 632 }