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 }