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