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.db;
017
018 import org.opengion.fukurou.model.NativeType;
019 import org.opengion.fukurou.util.Attributes;
020 import org.opengion.fukurou.util.ErrorMessage;
021 import org.opengion.fukurou.util.TagBuffer;
022 import org.opengion.hayabusa.common.HybsSystem;
023 import org.opengion.hayabusa.common.HybsSystemException;
024 import org.opengion.hayabusa.resource.CodeData;
025 import org.opengion.hayabusa.resource.ColumnData;
026 import org.opengion.hayabusa.resource.LabelData;
027 import org.opengion.hayabusa.resource.RoleMode;
028
029 /**
030 * DBType インターフェースを継承した Abstractクラスです?
031 * getRendererValue( String value ) 、getEditorValue( String value ) ?
032 * isValueChack( String ) メソ?を?サブクラスで実?る?があります?
033 *
034 * @og.rev 3.4.0.0 (2003/09/01) 表示パラメータ、編?ラメータ、文字パラメータの追??
035 * @og.group ??ブル管?
036 *
037 * @version 4.0
038 * @author Kazuhiko Hasegawa
039 * @since JDK5.0,
040 */
041 public final class DBColumn {
042
043 // 3.5.4.2 (2003/12/15) COLUMNS_MAXSIZE を定義しておきます?
044 private final int COLUMNS_MAXSIZE = HybsSystem.sysInt( "HTML_COLUMNS_MAXSIZE" ) ; // 表示フィールド?大きさ
045
046 private final ColumnData columnData ;
047 private final LabelData labelData ;
048 private final CodeData codeData ;
049
050 private final CellRenderer cellRenderer ; // 表示用レン?ー
051 private final CellEditor cellEditor ; // 編?エ?ター
052 private final DBType dbType ; // ??タのタイ?
053
054 private final String lang ; // ??
055 private final boolean writable ; // カラ?書き込み可能かど?
056 private final String defValue ; // ??タの?ォルト?
057 private final Attributes rendAttri ; // 表示用レン?ー追?属?
058 private final Attributes editAttri ; // 編?エ?ター追?属?
059 private final boolean addNoValue ; // メニューに空の選択リストを追?るかど? // 3.5.5.7 (2004/05/10)
060 private final String dbid ; // ??タベ?ス接続?ID
061 private final boolean official ; // カラ?ソースから作?されたかど? // 3.6.0.7 (2004/11/06)
062
063 private final int checkLevel ; // DBColumn の 整合?チェ?を行うレベルを規定します?
064
065 private final Selection selection ; // 4.0.0.0 (2007/11/07)
066
067 private final String eventColumn ; // 4.3.6.0 (2009/04/01) イベントカラ?
068 private final String rawEditParameter; // 4.3.6.0 (2009/04/01) {@XXXX}の変換がされて??パラメータ
069 private final String rawRendParameter; // 5.1.7.0 (2009/04/01) {@XXXX}の変換がされて??パラメータ
070 private final String eventURL ; // 4.3.6.0 (2009/04/01) イベントカラ?利用するURL
071
072 private final String useSLabel ; // 5.5.1.0 (2012/04/03) MENUのベ?ス表示の?替?
073 private final String noDisplayVal ; // 5.6.2.3 (2013/03/22) 非表示??設?
074
075 /**
076 * DBColumnConfig オブジェクトより作?されるコンストラクター
077 * すべての??は、インスタンス作?時に設定します?
078 * こ?オブジェクト??度作?されると変更されることはありません?
079 *
080 * @og.rev 4.0.0.0 (2005/01/31) 新規追?
081 * @og.rev 4.0.0.0 (2007/11/07) Selectionオブジェクトをキャ?ュする
082 * @og.rev 4.3.6.0 (2009/04/01) eventColumnの対?
083 * @og.rev 5.1.7.0 (2010/06/01) 動的プル?ン実?直?
084 * @og.rev 5.5.1.0 (2012/04/03) useSLabel対?
085 * @og.rev 5.6.2.3 (2013/03/22) 非表示??設定?noDisplayVal追?
086 *
087 * @param lang ??
088 * @param clmData カラ?ータオブジェク?
089 * @param lblData ラベル??タオブジェク?
090 * @param cdData コードデータオブジェク?
091 */
092 public DBColumn( final String lang,
093 final ColumnData clmData ,
094 final LabelData lblData ,
095 final CodeData cdData ) {
096 this.lang = lang ;
097 this.columnData = clmData ;
098 this.labelData = lblData ;
099 this.codeData = cdData ;
100
101 writable = true ;
102
103 try {
104 dbType = DBTypeFactory.newInstance( columnData.getDbType() );
105 }
106 catch( RuntimeException ex ) {
107 String errMsg = "dbType の作?に失敗しました?
108 + " name=[" + columnData.getName() + "]"
109 + " dbType=[" + columnData.getDbType() + "] "
110 + ex.getMessage();
111 throw new HybsSystemException( errMsg,ex );
112 }
113
114 rendAttri = null ;
115 editAttri = null ;
116 addNoValue = false ;
117 official = true ; // 3.6.0.7 (2004/11/06)
118 checkLevel = -1;
119 dbid = null ; // 標準から作?されるカラ?ブジェクト?、DEFAULT 接続?を設定する?
120
121 eventColumn = null; // 4.3.6.0 (2009/04/01)
122 rawEditParameter = clmData.getEditorParam(); // 4.3.6.0 (2009/04/01)
123 rawRendParameter = clmData.getRendererParam(); // 5.1.7.0 (2010/06/01)
124 eventURL = null; // 4.3.6.0 (2009/04/01)
125
126 useSLabel = "auto"; // 5.5.1.0
127 noDisplayVal= null; // 5.6.2.3 (2013/03/22) 非表示??設?
128
129 String def = columnData.getDefault();
130 if( def != null ) { defValue = def; }
131 else { defValue = dbType.getDefault() ; }
132
133 // 4.0.0.0 (2007/11/07)
134 selection = ( codeData == null ? null : new Selection_CODE( codeData ) );
135
136 try {
137 cellRenderer = DBCellFactory.newRenderer( columnData.getRenderer(),this );
138 cellEditor = DBCellFactory.newEditor( columnData.getEditor(),this );
139 }
140 catch( RuntimeException ex ) {
141 String errMsg = "Renderer,Editor の作?に失敗しました?
142 + " name=[" + columnData.getName() + "]"
143 + " Renderer=[" + columnData.getRenderer() + "] "
144 + " Editor=[" + columnData.getEditor() + "] "
145 + ex.getMessage();
146 throw new HybsSystemException( errMsg,ex );
147 }
148 }
149
150 /**
151 * DBColumnConfig オブジェクトより作?されるコンストラクター
152 * すべての??は、インスタンス作?時に設定します?
153 * こ?オブジェクト??度作?されると変更されることはありません?
154 *
155 * @og.rev 4.0.0.0 (2007/11/07) Selectionオブジェクトをキャ?ュする
156 * @og.rev 5.1.7.0 (2010/06/01) 動的プル?ン実?直?
157 * @og.rev 5.1.8.0 (2010/07/01) メソ?名変更(getDefValue ?getDefault)
158 * @og.rev 5.5.1.0 (2012/04/03) useSLabel対?
159 * @og.rev 5.6.2.3 (2013/03/22) 非表示??設定?noDisplayVal追?
160 * @og.rev 5.6.6.0 (2013/07/05) codeKeyVal 属?を使用した、Selection_KEYVAL オブジェクト?作?
161 *
162 * @param config DBColumnConfigオブジェク?
163 */
164 public DBColumn( final DBColumnConfig config ) {
165 lang = config.getLang() ;
166
167 columnData = config.getColumnData();
168 labelData = config.getLabelData();
169 codeData = config.getCodeData();
170
171 writable = config.isWritable();
172 dbType = DBTypeFactory.newInstance( columnData.getDbType() );
173 rendAttri = config.getRendererAttributes();
174 editAttri = config.getEditorAttributes();
175 addNoValue = config.isAddNoValue();
176 official = config.isOfficial(); // 3.6.0.7 (2004/11/06)
177 dbid = config.getDbid();
178
179 eventColumn = config.getEventColumn(); // 4.3.6.0 (2009/04/01)
180 rawEditParameter = config.getRawEditParameter(); // 4.3.6.0 (2009/04/01)
181 rawRendParameter = config.getRawRendParameter(); // 5.1.7.0 (2010/06/01) 動的プル?ン実?直?
182 eventURL = config.getEventURL(); // 4.3.6.0 (2009/04/01)
183
184 useSLabel = config.getUseSLabel(); // 5.5.1.0 (2012/04/03)
185 noDisplayVal = config.getNoDisplayVal(); // 5.6.2.3 (2013/03/22) 非表示??設?
186
187 // DBColumn の 整合?チェ?を行うレベルを規定します?
188 String CHECK_LEVEL = HybsSystem.sys( "DB_OFFICIAL_COLUMN_CHECK_LEVEL" );
189 if( !official && ( CHECK_LEVEL != null && CHECK_LEVEL.length() > 0 ) ) {
190 checkLevel = Integer.parseInt( CHECK_LEVEL );
191 }
192 else {
193 checkLevel = -1;
194 }
195
196 // String def = config.getDefValue();
197 String def = config.getDefault();
198 if( def != null ) { defValue = def; }
199 else { defValue = dbType.getDefault() ; }
200
201 // 4.0.0.0 (2007/11/07)
202 // selection = ( codeData == null ? null : new Selection_CODE( codeData ) );
203 // 5.6.6.0 (2013/07/05) codeKeyVal 属?を使用した、Selection_KEYVAL オブジェクト?作?
204 // 優先?位?、codeData オブジェクトで、codeKeyVal を利用したSelectionは、DBColumnConfig からのみ作?可能
205 if( codeData != null ) {
206 selection = new Selection_CODE( codeData );
207 }
208 else {
209 String codeKeyVal = config.getCodeKeyVal();
210 if( codeKeyVal != null ) {
211 selection = new Selection_KEYVAL( codeKeyVal );
212 }
213 else {
214 selection = null;
215 }
216 }
217
218 cellRenderer = DBCellFactory.newRenderer( columnData.getRenderer(),this );
219 cellEditor = DBCellFactory.newEditor( columnData.getEditor(),this );
220 }
221
222 /**
223 * ?を返します?
224 *
225 * @return ??
226 */
227 public String getLang() {
228 return lang;
229 }
230
231 /**
232 * カラ?を返します?
233 *
234 * @return カラ?
235 */
236 public String getName() {
237 return columnData.getName();
238 }
239
240 /**
241 * カラ??ラベル名を返します?
242 *
243 * @return カラ??ラベル?
244 */
245 public String getLabel() {
246 return labelData.getLabel();
247 }
248
249 /**
250 * カラ??ラベル名を返します?
251 *
252 * @return カラ??ラベル?名前(短))
253 */
254 public String getShortLabel() {
255 return labelData.getShortLabel();
256 }
257
258 /**
259 * カラ??ラベル名を返します?
260 *
261 * @return カラ??ラベル?名前(長))
262 */
263 public String getLongLabel() {
264 return labelData.getLongLabel();
265 }
266
267 /**
268 * カラ??クラスを文字?にした名称を返します?
269 * これは?HTML上??タグに?データベ?ス定義に応じたクラス名を
270 * 表します?(VARCHAR2、NUMBER など)
271 *
272 * これは、カラ????タタイ?X,S9など)と機??重?ますが?
273 * そ?カラ?、大まかな?で、文字?であるか?数字であるかを示します?
274 *
275 * 画面表示上?右?、左???IMEのON/OFFなどの CSSファイルの???
276 * カラ????タタイ?X,S9など)ですが、テーブルソート時のソート条件
277 * は、この クラス??(VARCHAR2、NUMBER)を参照します?
278 *
279 * @return カラ??クラスを文字?にした名称(VARCHAR2、NUMBER など)
280 */
281 public String getClassName() {
282 return columnData.getClassName();
283 }
284
285 /**
286 * フィールド???タ長を返します?
287 * 通常は、整数型???と??タ長は同じですが,小数点を表すデータ長は
288 * x,y 形式?場合?x + 2 桁で表されます?(マイナス記号と小数点記号)
289 * 7,3 は?xxxx,yyy のフォーマットで、データ長は? になります?
290 *
291 * @og.rev 2.1.1.2 (2002/11/21) ?桁数入力時の桁数チェ?の間違?訂正?
292 * @og.rev 4.0.0.0 (2005/01/31) メソ?名変更 getMaxlength() ?getTotalSize()
293 *
294 * @return ??タ長定義??
295 */
296 public int getTotalSize() {
297 return columnData.getTotalSize();
298 }
299
300 /**
301 * フィールド?使用桁数を返します?
302 * 少数??場合??7,3" のようなカンマで整数部、小数部を区?た書式になります?
303 * 7,3 は?xxxx,yyy のフォーマットで、整数部?桁?小数部?桁を意味します?
304 *
305 * @return 使用桁数
306 */
307 public String getMaxlength() {
308 return columnData.getMaxlength();
309 }
310
311 /**
312 * フィールド?整数部の??タ長を返します?
313 * 通常は、整数型???と??タ長は同じですが,小数点を表すデータ長は
314 * x,y 形式?場合?x - y 桁で表されます?(マイナス記号含ま?
315 * 7,3 は?xxxx,yyy のフォーマットで、データ長は? になります?
316 *
317 * @return ??タ長定義??
318 */
319 public int getSizeX() {
320 return columnData.getSizeX() ;
321 }
322
323 /**
324 * フィールド?小数部の??タ長を返します?
325 * 通常は、整数型???では? になりますが,小数点を表すデータ長は
326 * x,y 形式?場合?y 桁で表されます?
327 * 7,3 は?xxxx,yyy のフォーマットで、データ長は? になります?
328 *
329 * @return ??タ長定義??
330 */
331 public int getSizeY() {
332 return columnData.getSizeY() ;
333 }
334
335 /**
336 * カラ??表示桁数を返します?
337 * viewLength は、設定した?合?み、使用できます?通常は、null が返ります?
338 *
339 * @og.rev 3.5.5.5 (2004/04/23) 新規追?
340 * @og.rev 4.0.0.0 (2005/01/31) メソ?名変更 getSize() ?getViewLength()
341 *
342 * @return カラ???桁数
343 */
344 public String getViewLength() {
345 return columnData.getViewLength();
346 }
347
348 /**
349 * カラ?書き込み可能かど?を返します?
350 *
351 * @return カラ?書き込み可能かど?
352 */
353 public boolean isWritable() {
354 return writable;
355 }
356
357 /**
358 * ??タの値そ?も?ではなく?そ?値のラベル?を返します?
359 *
360 * @og.rev 3.5.5.4 (2004/04/15) value ?null の場合??"(ゼロストリング)にする?
361 *
362 * @param value 入力?
363 *
364 * @return ??タ表示用の??
365 */
366 public String getRendererValue( final String value ) {
367 return cellRenderer.getValue( (value != null ) ? value : "" );
368 }
369
370 /**
371 * ??タ表示用のHTML??を作?します?
372 * 行番号毎に異なる?を返すことの出来?DBCellRenderer を使用することが?来ます?
373 *
374 * @og.rev 3.5.5.7 (2004/05/10) 行番号に無関係に、?を返すように変更します?
375 * @og.rev 4.0.0.0 (2005/11/30) 行番号に対応した?を返すように変更します?
376 *
377 * @param row 行番号
378 * @param value 入力?
379 *
380 * @return ??タ編?の??
381 */
382 public String getRendererValue( final int row,final String value ) {
383 return cellRenderer.getValue( row,(value != null ) ? value : "" );
384 }
385
386 /**
387 * ??タ編?のHTML??を作?します?
388 *
389 * @og.rev 3.5.5.4 (2004/04/15) value ?null の場合??"(ゼロストリング)にする?
390 *
391 * @param value 入力?
392 *
393 * @return ??タ編?の??
394 */
395 public String getEditorValue( final String value ) {
396 return cellEditor.getValue( (value != null ) ? value : "" );
397 }
398
399 /**
400 * ??タ編?のHTML??を作?します?
401 * 行番号付?編?ータを作?します?名前_行番号 で登録する為?
402 * リクエスト情報を1つ毎?フィールドで処?きます?
403 *
404 * @param row 行番号
405 * @param value 入力?
406 *
407 * @return ??タ編?の??
408 */
409 public String getEditorValue( final int row,final String value ) {
410 return cellEditor.getValue( row,(value != null ) ? value : "" );
411 }
412
413 /**
414 * ??タ出力用の固定長??を作?します?
415 * HOST送信用桁数がセ?されて?ば、そちらを優先します?
416 *
417 * @og.rev 3.5.4.5 (2004/01/23) エンコード指定に変更します?
418 *
419 * @param value 対象の値
420 * @param encode 固定長で変換する?エンコー?
421 *
422 * @return ??タ編?の??
423 */
424 public String getWriterValue( final String value,final String encode ) {
425 return dbType.valueFill( value ,columnData.getSizeX(), columnData.getSizeY(), encode );
426 }
427
428 /**
429 * ??タの表示用レン?ーを返します?
430 *
431 * @og.rev 3.8.0.2 (2005/07/11) 新規追?
432 *
433 * @return ??タの表示用レン?ー
434 */
435 public String getRenderer() {
436 return columnData.getRenderer() ;
437 }
438
439 /**
440 * ??タの編?エ?ターを返します?
441 *
442 * @og.rev 3.8.0.2 (2005/07/11) 新規追?
443 *
444 * @return ??タの編?エ?ター
445 */
446 public String getEditor() {
447 return columnData.getEditor() ;
448 }
449
450 /**
451 * ?種別名を返します?
452 * カラ???種別名名称を返します?
453 * これは?HTML上??タグに?データベ?ス定義に応じたクラス?
454 * セ??CSS(Cascading Style Sheet)の class="xxxxx" とする事により
455 * ?スタイルを表現するのに使用します?
456 *
457 * ここでは, カラ?ソースの DBTYPE 属?で????(X,S9,KXなど)を返します?
458 *
459 * @return ??タの?種別(X,KX,S9 など)
460 */
461 public String getDbType() {
462 return columnData.getDbType() ;
463 }
464
465 /**
466 * ??タのNATIVEの型?識別コードを返します?
467 *
468 * @og.rev 4.1.1.2 (2008/02/28) Enum?fukurou.model.NativeType)に変更
469 *
470 * @return NATIVEの型?識別コー?DBType で規?
471 * @see org.opengion.fukurou.model.NativeType
472 */
473 public NativeType getNativeType() {
474 return dbType.getNativeType();
475 }
476
477 /**
478 * そ?カラ??,?ォルト?の値を返します?
479 *
480 * カラ?ソースに ?ォルト情報が登録されて?場合?,そ?値を返します?
481 * ?ォルト?が設定されて???合?, null を返します?
482 *
483 * @return ?ォルト?(無ければ null)
484 */
485 public String getDefault() {
486 return defValue;
487 }
488
489 /**
490 * 表示用レン?ーのパラメータを取得します?
491 *
492 * @og.rev 3.4.0.0 (2003/09/01) 新規追?
493 *
494 * @return 表示用レン?ーのパラメータ
495 */
496 public String getRendererParam() {
497 return columnData.getRendererParam();
498 }
499
500 /**
501 * 編?エ?ターのパラメータを取得します?
502 *
503 * @og.rev 3.4.0.0 (2003/09/01) 新規追?
504 *
505 * @return 編?エ?ターのパラメータ
506 */
507 public String getEditorParam() {
508 return columnData.getEditorParam();
509 }
510
511 /**
512 * ??タタイプ?パラメータを取得します?
513 *
514 * @og.rev 3.4.0.0 (2003/09/01) 新規追?
515 *
516 * @return ??タタイプ?パラメータ
517 */
518 public String getDbTypeParam() {
519 return columnData.getDbTypeParam();
520 }
521
522 /**
523 * カラ?ールを取得します?
524 *
525 * @og.rev 4.0.0.0 (2005/11/30) 新規追?
526 *
527 * @return カラ?ール
528 */
529 public String getRoles() {
530 return columnData.getRoles();
531 }
532
533 /**
534 * カラ?ブジェクト?ロールモードを返します?
535 *
536 * @og.rev 4.3.0.0 (2008/07/04) ロールモード?ルチ対?
537 *
538 * @return カラ?ブジェクト?ロールモー?
539 */
540 public RoleMode getRoleMode() {
541 return columnData.getRoleMode();
542 }
543
544 /**
545 * 接続?IDを返します?
546 *
547 * @return 接続?ID
548 */
549 public String getDbid() {
550 return dbid;
551 }
552
553 /**
554 * String引数の??を+1した文字?を返します?
555 * これは、英字?場?A,B,C など)は、B,C,D のように,?桁??コードを
556 * ??します?
557 * ??が数字タイプ?場合?, 数字に変換して?1 します?(桁上がりもあり)
558 * 混在タイプ?場合?,??桁だけを確認して ?1します?
559 * 引数?null の場合と、ゼロ??("")の場合?,引数?そ?まま返します?
560 *
561 * ※ 機?拡張?第?引数に????(数字?日付?を指定する事で?
562 * 引数の??に、任意?値を加算できるようにします?
563 * ただし?すべての DBTypeではなく?ある程度特定します?
564 * 対象外? DBTypeで、第?引数?null 出な??合?、Exception ?Throwsします?
565 * 第?引数が?null の場合?、従来と同じ?1します?
566 *
567 * @og.rev 5.6.0.3 (2012/01/24) ADD に、引数の値を加算する機?を追?ます?
568 *
569 * @param value 引数の??
570 * @param add ?する文字?(null の場合?、従来と同じ?1 します?)
571 *
572 * @return 引数の??を+1した文字?。また?、任意?値を加算した文字??
573 */
574 // public String valueAdd( final String value ) {
575 public String valueAdd( final String value,final String add ) {
576 // return dbType.valueAdd( value );
577
578 // DBType の実??関係で、旧メソ?は残しておきます?
579 if( add == null || add.isEmpty() ) {
580 return dbType.valueAdd( value );
581 }
582 else {
583 return dbType.valueAdd( value , add );
584 }
585 }
586
587 /**
588 * ??タが登録可能かど?をチェ?します?
589 * ??タがエラーの場合?、そのエラー?を返します?
590 *
591 * @og.rev 3.6.0.0 (2004/09/22) dbType パラメータを引数に追?
592 * @og.rev 3.6.0.7 (2004/11/06) official属?がfalseの場合?チェ?レベルに対応したチェ?を行う?
593 * @og.rev 3.8.0.8 (2005/10/03) 企画改?61200-050921-02 ラベルからHTMLタグを削除する?
594 * @og.rev 5.2.2.0 (2010/11/01) ?処??valueCheck( value , true ) に委譲?
595 *
596 * @param value チェ?対象の値
597 *
598 * @return エラー? 正常時? null
599 * @see #valueCheck( String , boolean )
600 */
601 public ErrorMessage valueCheck( final String value ) {
602 return valueCheck( value , true );
603 }
604
605 /**
606 * ??タが登録可能かど?をチェ?します?
607 * ??タがエラーの場合?、そのエラー?を返します?
608 *
609 * @og.rev 3.6.0.0 (2004/09/22) dbType パラメータを引数に追?
610 * @og.rev 3.6.0.7 (2004/11/06) official属?がfalseの場合?チェ?レベルに対応したチェ?を行う?
611 * @og.rev 3.8.0.8 (2005/10/03) 企画改?61200-050921-02 ラベルからHTMLタグを削除する?
612 * @og.rev 5.2.2.0 (2010/11/01) 厳?チェ?(isStrict=true)するフラグを追?
613 *
614 * @param value チェ?対象の値
615 * @param isStrict 厳?チェ?(isStrict=true)するかど?
616 *
617 * @return エラー? 正常時? null
618 */
619 // public ErrorMessage valueCheck( final String value ) {
620 public ErrorMessage valueCheck( final String value , final boolean isStrict ) {
621
622 // 3.8.0.8 (2005/10/03) ラベルからHTMLタグを削除する?
623 String lbl = labelData.getLabel() ;
624 if( lbl.indexOf( '<' ) >= 0 ) {
625 lbl = lbl.replaceAll( "<[^>]*>","" );
626 }
627
628 // 5.2.2.0 (2010/11/01) 厳?チェ?(isStrict=true)するフラグを追?
629 // ErrorMessage errMsg = dbType.valueCheck( lbl,value,columnData.getSizeX(), columnData.getSizeY(),columnData.getDbTypeParam() );
630 ErrorMessage errMsg = dbType.valueCheck( lbl,value,columnData.getSizeX(), columnData.getSizeY(),columnData.getDbTypeParam() , isStrict );
631 if( checkLevel >= 0 ) {
632 // ERR0034:??カラ?ブジェクトには、カラ?ソースが存在しません。name={0} label={1}
633 errMsg.addMessage( 0,checkLevel,"ERR0034", columnData.getName(),labelData.getLabel() );
634 }
635 return errMsg ;
636 }
637
638 /**
639 * エ?ターで編?れた??タを登録する場合に、データそ?も??
640 * 変換して、実登録??タを作?します?
641 * 例えば,大??みのフィールドなら?大?化します?
642 * 実登録??タの作?は、DBType オブジェクトを利用します?で,
643 * これと DBCellEditor とがアンマッチ?場合?、うまくデータ変換
644 * されな?能性があります?で、注意願います?
645 *
646 * @param value ?に編?ータとして登録されたデータ
647 *
648 * @return 修正後???(?に??タベ?スに登録する??タ)
649 */
650 public String valueSet( final String value ) {
651 return dbType.valueSet( value );
652 }
653
654 /**
655 * action で?されたコマンドを実行して、?の変換を行います?
656 * oldValue(旧??タ)は、?のDBTableModelに設定されて?値です?通常は?
657 * こ?値を使用してカラ?に変換を行います?newValue(新??タ)は、引数で
658 * ?された新しい値です?こ?値には、パラメータを指定して変換方法を
659 * 制御することも可能です?
660 * ??アクションがカラ?処?きな??合?、エラーになります?
661 *
662 * @param action アクションコマン?
663 * @param oldValue 入力データ(旧??タ)
664 * @param newValue 入力データ(新??タ)
665 *
666 * @return 実行後???タ
667 */
668 public String valueAction( final String action,final String oldValue,final String newValue ) {
669 return dbType.valueAction( action,oldValue,newValue );
670 }
671
672 /**
673 * ?の設定情報オブジェクトを返します?
674 * こ?オブジェクトを ローカルで書き換えて、DBColumn を作るようにします?
675 *
676 * @og.rev 3.1.0.0 (2003/03/20) DBColumnConfig 関係?見直し?
677 * @og.rev 3.4.0.0 (2003/09/01) 表示パラメータ、編?ラメータ、文字パラメータの追??
678 * @og.rev 3.5.5.5 (2004/04/23) size 属?の意味を変更、maxlength 属?を追??
679 * @og.rev 3.5.5.8 (2004/05/20) codeName 属?を追??
680 * @og.rev 3.6.0.7 (2004/11/06) カラ?ソースから作?されたかど?(official属?追?
681 * @og.rev 5.1.8.0 (2010/07/01) すべての属?を設定するよ?します?
682 * @og.rev 5.5.1.0 (2012/04/03) useSLabel対?
683 * @og.rev 5.6.2.3 (2013/03/22) 非表示??設定?noDisplayVal追?
684 *
685 * @return 設定情報オブジェク?
686 */
687 public DBColumnConfig getConfig() {
688 // 互換性確保?ため、DBColumnConfig の コンストラクタは修正して?せん?
689
690 DBColumnConfig config =
691 new DBColumnConfig(
692 lang ,
693 columnData.getName() ,
694 labelData ,
695 columnData.getClassName() ,
696 columnData.getMaxlength() ,
697 String.valueOf( writable ) ,
698 columnData.getRenderer() ,
699 columnData.getEditor() ,
700 codeData ,
701 columnData.getDbType() ,
702 defValue ,
703 columnData.getRendererParam() ,
704 columnData.getEditorParam() ,
705 columnData.getDbTypeParam() ,
706 columnData.getRoles() , // 4.0.0 (2005/11/30)
707 official , // 3.6.0.7 (2004/11/06)
708 dbid ) ;
709 config.setViewLength( columnData.getViewLength() );
710
711 // 5.1.8.0 (2010/07/01) すべての属?を設定するよ?します?
712 // コンストラクタは修正して??め?セ?ーメソ?経由で渡します?
713 config.setRendererAttributes( rendAttri );
714 config.setEditorAttributes( editAttri );
715 config.setAddNoValue( addNoValue );
716 config.setEventColumn( eventColumn );
717 config.setRawEditParameter( rawEditParameter );
718 config.setRawRendParameter( rawRendParameter );
719 config.setEventURL( eventURL );
720
721 config.setUseSLabel( useSLabel ); // 5.5.1.0 (2012/04/03)
722 config.setNoDisplayVal( noDisplayVal ); // 5.6.2.3 (2013/03/22) 非表示??設?
723
724 return config ;
725 }
726
727 /**
728 * 表示用レン?ーの追??を返します?
729 *
730 * @og.rev 3.1.0.0 (2003/03/20) DBColumnConfig オブジェクト??キープを?
731 *
732 * @return 属?リス?
733 */
734 public Attributes getRendererAttributes() {
735 return rendAttri ;
736 }
737
738 /**
739 * 編?エ?ター用の追??を返します?
740 *
741 * @og.rev 3.1.0.0 (2003/03/20) DBColumnConfig オブジェクト??キープを?
742 *
743 * @return 属?リス?
744 */
745 public Attributes getEditorAttributes() {
746 return editAttri ;
747 }
748
749 /**
750 * メニューに空の選択リストを追?るかど?を取得します?
751 *
752 * @og.rev 3.5.5.7 (2004/05/10) 新規追?
753 *
754 * @return 空の選択リストを追?るかど?(true:追??false:追?な?
755 */
756 public boolean isAddNoValue() {
757 return addNoValue ;
758 }
759
760 /**
761 * こ?カラ?ブジェクトがカラ?ソースより正式に作られたかど?を取得します?
762 * カラ?ソースが無??合?、仮オブジェクトか??タベ?スメタ??タより作?されます?
763 * そ?場合?、チェ?機?が緩くなるため?正式なカラ?ブジェクトと区別する為に
764 * こ?属?を持ちます?
765 *
766 * @og.rev 3.6.0.7 (2004/11/06) 新規追?
767 *
768 * @return 正式に作られたかど?(true:正?false:暫?
769 */
770 public boolean isOfficial() {
771 return official ;
772 }
773
774 /**
775 * カラ??ラベル??タオブジェクトを返します?
776 *
777 * @return カラ??ラベル??タオブジェク?
778 */
779 public LabelData getLabelData() {
780 return labelData;
781 }
782
783 /**
784 * カラ??コードデータオブジェクトを返します?
785 * コードデータが存在しな??合?、null を返します?
786 * 受け取り側で、null かど?判定してから使用してください?
787 *
788 * @og.rev 5.2.1.0 (2010/10/01) codeData ?null でも?そ?まま返します?
789 *
790 * @return カラ??コードデータオブジェク?
791 */
792 public CodeData getCodeData() {
793 // if( codeData == null ) {
794 // String errMsg = "コードリソースが定義されて?せん? + HybsSystem.CR
795 // + "name=[" + getName() + "],label=[" + getLabel() + "]" ;
796 // throw new HybsSystemException( errMsg );
797 // }
798 return codeData;
799 }
800
801 /**
802 * ?入力サイズ(maxlength)より、実際のフィールド?サイズを求めます?
803 *
804 * maxlength : colums_maxsize ?? ?size="maxlength" 変換しません?
805 *
806 * ただし?maxlength が?colums_maxsize を?る?合?、colums_maxsize とします?
807 *
808 * @og.rev 4.0.0.0 (2005/01/31) getFieldSize メソ??XHTMLTag から DBColumn へ移?
809 * @og.rev 4.0.0.0 (2007/02/05) ADJUSTMENT 処??します?(CSSにて対?
810 *
811 * @param maxlength 実際の?桁数
812 * @param colums_maxsize 表示上??桁数?
813 *
814 * @return 表示すべきサイズ
815 * @see #getFieldSize( int )
816 */
817 public int getFieldSize( final int maxlength,final int colums_maxsize ) {
818 int size = maxlength;
819
820 if( size <= 0 || size > colums_maxsize ) {
821 size = colums_maxsize;
822 }
823
824 return size;
825 }
826
827 /**
828 * ?入力サイズ(maxlength)より、実際のフィールド?サイズを求めます?
829 *
830 * maxlength : colums_maxsize ?? ?size="maxlength" 変換しません?
831 *
832 * ただし?maxlength が?COLUMNS_MAXSIZE を?る?合?、COLUMNS_MAXSIZE とします?
833 *
834 * @og.rev 4.0.0.0 (2005/01/31) getFieldSize メソ??XHTMLTag から DBColumn へ移?
835 * @og.rev 4.0.0.0 (2007/02/05) ADJUSTMENT 処??します?(CSSにて対?
836 *
837 * @param maxlength 実際の?桁数
838 *
839 * @return 表示すべきサイズ
840 * @see #getFieldSize( int ,int )
841 */
842 public int getFieldSize( final int maxlength ) {
843 return getFieldSize( maxlength,COLUMNS_MAXSIZE );
844 }
845
846 /**
847 * コードリソースSelectionオブジェクトを返します?
848 *
849 * @og.rev 4.0.0.0 (2007/11/02) 新規追?
850 *
851 * @return コードSelectionオブジェク?
852 */
853 public Selection getSelection() {
854 // 5.6.1.1 (2013/02/08) 暫定?置。とりあえずエラーは発生させな??
855 // if( selection == null ) {
856 // String errMsg = "コードリソースが定義されて?せん? + HybsSystem.CR
857 // + "name=[" + getName() + "],label=[" + getLabel() + "]" ; // 5.1.8.0 (2010/07/01) errMsg 修正
858 // throw new HybsSystemException( errMsg );
859 // }
860 return selection ;
861 }
862
863 /**
864 * イベントカラ?親カラ?
865 *
866 * @og.rev 4.3.6.0 (2009/04/01)
867 *
868 * @return イベントカラ?
869 */
870 public String getEventColumn() {
871 return eventColumn ;
872 }
873
874 // /**
875 // * {@XXXX}を変換して??態?編?ラメータを返す
876 // *
877 // * @og.rev 4.3.6.0 (2009/04/01)
878 // *
879 // * @return 生編?ラメータ
880 // */
881 // public String getRawParam() {
882 // return rawEditParameter ;
883 // }
884
885 /**
886 * {@XXXX}を変換して??態?編?ラメータを返します?
887 *
888 * @og.rev 4.3.6.0 (2009/04/01)
889 *
890 * @return 生編?ラメータ
891 */
892 public String getRawEditParam() {
893 return rawEditParameter ;
894 }
895
896 /**
897 * {@XXXX}を変換して??態?編?ラメータを返します?
898 *
899 * @og.rev 5.1.7.0 (2010/06/01) 動的プル?ン実?直?
900 *
901 * @return 生表示パラメータ
902 */
903 public String getRawRendParam() {
904 return rawRendParameter ;
905 }
906
907 /**
908 * eventColumn利用時にJSで利用するURL
909 *
910 * @og.rev 4.3.6.0 (2009/04/01)
911 *
912 * @return イベン?RL
913 */
914 public String getEventURL() {
915 return eventURL ;
916 }
917
918 /**
919 * 引数のタグ??に対して、イベントカラ??実行に?なspanタグを付加した
920 * ??を返します?
921 *
922 * @param tag タグ??
923 * @param initVal 子カラ??初期値
924 * @param writable タグの要?書き込み可能かど?
925 *
926 * @return spanタグを付加したタグ??
927 */
928 public String getEventColumnTag( final String tag, final String initVal, final boolean writable ) {
929 return getEventColumnTag( tag, initVal, -1, writable );
930 }
931
932 /**
933 * 引数のタグ??に対して、イベントカラ??実行に?なspanタグを付加した
934 * ??を返します?
935 *
936 * @param tag タグ??
937 * @param initVal 子カラ??初期値
938 * @param row 行番号
939 * @param writable タグの要?書き込み可能かど?
940 *
941 * @return spanタグを付加したタグ??
942 */
943 public String getEventColumnTag( final String tag, final String initVal, final int row, final boolean writable ) {
944 TagBuffer span = new TagBuffer( "span" );
945 span.add( "class", HybsSystem.EVENT_COLUMN_CLASS );
946 // span.add( HybsSystem.EVENT_COLUMN_ID, columnData.getName() + ( row < 0 ? "" : HybsSystem.JOINT_STRING + String.valueOf( row ) ) );
947 span.add( HybsSystem.EVENT_COLUMN_ID, columnData.getName() + ( row < 0 ? "" : HybsSystem.JOINT_STRING + row ) );
948 span.add( HybsSystem.EVENT_COLUMN_INITVAL, initVal );
949 span.add( HybsSystem.EVENT_COLUMN_WRITABLE, String.valueOf( writable ) );
950 span.setBody( tag );
951 return span.makeTag();
952 }
953
954 /**
955 * セ?されて?表示パラメータ、編?ラメータに"{@XXXX}"が含まれて??パラメーターのパ?スが?か)?
956 * 返します?
957 *
958 * @return "{@XXXX}"が含まれて??含まれて?場?rue)
959 */
960 public boolean isNeedsParamParse() {
961 return ( columnData.getRendererParam() != null && columnData.getRendererParam().indexOf( "{@" ) >= 0 )
962 || ( columnData.getEditorParam() != null && columnData.getEditorParam().indexOf( "{@" ) >= 0 );
963 }
964
965 /**
966 * ラベル短ベ?スのメニューにするかど?
967 *
968 * @og.rev 5.5.1.0 (2012/04/03)
969 *
970 * @return イベントカラ?
971 */
972 public String getUseSLabel() {
973 return useSLabel ;
974 }
975
976 /**
977 * 非表示??を返します?
978 *
979 * これは、例えば、数字型の場合?? がデフォルトなどの場合?
980 * あえて表示したくな?どのケースに使?す?
981 * そ?ような状況が設定されて???合?、null が返されます?
982 *
983 * @og.rev 5.6.2.3 (2013/03/22) 新規追?
984 *
985 * @return 非表示??
986 */
987 public String getNoDisplayVal() {
988 return noDisplayVal ;
989 }
990 }