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 }