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