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 }