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 */ 016package org.opengion.hayabusa.db; 017 018import org.opengion.fukurou.util.Attributes; 019import org.opengion.hayabusa.common.HybsSystem; 020import org.opengion.hayabusa.resource.CodeData; 021import org.opengion.hayabusa.resource.ColumnData; 022import org.opengion.hayabusa.resource.LabelData; 023 024/** 025 * DBColumnオブジェクトを構築する為の 引数を持っているデータクラスです。 026 * このクラス自身は、書き換え可能ですが、DBColumnオブジェクトは、読込み専用の 027 * オブジェクトのため、別のオブジェクトを作成したい場合は,このクラスを 028 * DBColumnオブジェクトより取得し、内容を書き換えて、再度 DBColumnオブジェクトを 029 * 構築することになります。 030 * 031 * @og.rev 3.4.0.0 (2003/09/01) 表示パラメータ、編集パラメータ、文字パラメータの追加。 032 * @og.group テーブル管理 033 * 034 * @version 4.0 035 * @author Kazuhiko Hasegawa 036 * @since JDK5.0, 037 */ 038public final class DBColumnConfig { 039 private String[] clmData; // カラム配列データ 040 private LabelData labelData; // ラベルデータ 041 private CodeData codeData; // コードデータ 042 043 // 6.4.5.2 (2016/05/06) rendAttri,editAttri は、not null にします。 044 private final Attributes rendAttri = new Attributes(); // 表示用レンデラー追加用属性 045 private final Attributes editAttri = new Attributes(); // 編集用エディター追加用属性 046 047 private String lang; // 言語 048 private String writable = "true"; // カラムが書き込み可能かどうか 049 private boolean addNoValue; // メニューに空の選択リストを追加するかどうか // 3.5.5.7 (2004/05/10) 050 private String addKeyLabel; // 6.0.4.0 (2014/11/28) キー:ラベル形式で表示するかどうか 051 private boolean writeKeyLabel; // 6.2.3.0 (2015/05/01) 052 private String dbid; // データベース接続先ID 053 private boolean official; // カラムリソースから作成されたかどうか(再設定可能) // 5.4.3.4 (2012/01/12) 054 055 private String eventColumn; // 4.3.6.0 (2009/04/01) イベントカラム 056 private String eventValue; // 6.3.3.0 (2015/07/25) eventValue 追加 057 private String rawEditParameter; // 4.3.6.0 (2009/04/01) {@XXXX}を変換していないパラメータ 058 private String rawRendParameter; // 5.1.7.0 (2010/06/01) 動的プルダウン実装見直し 059 private String eventURL; // 5.1.9.0 (2010/08/01) 動的プルダウン不具合対応 060 061 private String useSLabel = "auto"; // 5.5.1.0 (2012/04/03) MENU系でSLABELを利用するかどうか 062 private String noDisplayVal; // 5.6.2.3 (2013/03/22) 非表示文字の設定 063 064 // 6.0.4.0 (2014/11/28) codeKeyVal は、KBMENU として、param にセットする為、廃止 065 066 private boolean stringOutput = HybsSystem.sysBool( "USE_STRING_EXCEL_OUTPUT" ); // 5.7.6.3 (2013/05/23) ファイルレンデラ出力時のフラグ 067 private boolean writeCtrl; // 7.0.1.5 (2018/12/10) writeCtrlで出力時のアンダーバー削除 068 private boolean useDateFeed = true; // 日付送り戻し機能の有効/無効 8.1.2.3 (2022/05/20) 069 070 /** 071 * コンストラクター 072 * 引数は、すべて文字列型で渡します。 073 * 074 * @og.rev 3.4.0.0 (2003/09/01) 表示パラメータ、編集パラメータ、文字パラメータの追加。 075 * @og.rev 3.5.5.7 (2004/05/10) CodeSelection を、codeName を元に構築できるように設定します。 076 * @og.rev 3.6.0.3 (2004/10/05) dbTypePrm は、editorPrm と無関係に設定します。 077 * @og.rev 3.6.0.7 (2004/11/06) カラムリソースから作成されたかどうか(official属性追加) 078 * @og.rev 5.1.6.0 (2010/05/01) DBTypeの初期値を "XK" とします。 079 * @og.rev 5.7.3.0 (2014/02/07) labelData の null 対応 080 * @og.rev 6.2.0.0 (2015/02/27) フィールドサイズ 追加(VIEW_LENGTHと分離して、役割を明確にする) 081 * 082 * @param lang 言語 083 * @param name カラム名 084 * @param labelData カラムのラベルデータオブジェクト 085 * @param className カラムのクラスを文字列にした名称 086 * @param fieldSize 入力枠サイズ // 6.2.0.0 (2015/02/27) 087 * @param viewLength カラムの表示文字数 // 6.2.0.0 (2015/02/27) 088 * @param maxlength カラムの最大桁数 089 * @param writable カラムが書き込み可能かどうか 090 * @param renderer データの表示用レンデラー 091 * @param editor データの編集用エディター 092 * @param codeData メニューの項目オブジェクト 093 * @param dbType データのタイプ 094 * @param dataDef データのデフォルト値 095 * @param rendererPrm 表示用レンデラーのパラメータ 096 * @param editorPrm 編集用エディターのパラメータ 097 * @param dbTypePrm データのタイプのパラメータ 098 * @param roles カラムロール 099 * @param official 正規カラムかどうか 100 * @param dbid データベース接続先ID 101 */ 102 public DBColumnConfig( final String lang , 103 final String name , 104 final LabelData labelData , // 4.0.0 (2005/01/31) 105 final String className , 106 final String fieldSize , // 6.2.0.0 (2015/02/27) 107 final String viewLength , // 6.2.0.0 (2015/02/27) 108 final String maxlength , // 3.5.5.5 (2004/04/23) 109 final String writable , 110 final String renderer , 111 final String editor , 112 final CodeData codeData , // 4.0.0 (2005/01/31) 113 final String dbType , 114 final String dataDef , 115 final String rendererPrm , 116 final String editorPrm , 117 final String dbTypePrm , 118 final String roles , // 4.0.0 (2005/11/30) 119 final boolean official , // 3.6.0.7 (2004/11/06) 120 final String dbid ) { 121 clmData = new String[ColumnData.DATA_SIZE]; 122 clmData[ColumnData.CLM ] = name ; 123 clmData[ColumnData.CLS_NAME ] = className ; 124 clmData[ColumnData.FIELD_SIZE ] = fieldSize ; // 6.2.0.0 (2015/02/27) 125 clmData[ColumnData.VIEW_LENGTH ] = viewLength ; // 6.2.0.0 (2015/02/27) 126 clmData[ColumnData.USE_LENGTH ] = maxlength ; 127 clmData[ColumnData.RENDERER ] = renderer ; 128 clmData[ColumnData.EDITOR ] = editor ; 129 clmData[ColumnData.DBTYPE ] = dbType ; 130 clmData[ColumnData.DATA_DEFAULT ] = dataDef ; 131 clmData[ColumnData.RENDERER_PARAM] = rendererPrm; 132 clmData[ColumnData.TYPE_PARAM ] = dbTypePrm ; 133 clmData[ColumnData.ROLES ] = roles ; // 4.0.0 (2005/11/30) 134 135 this.lang = lang ; 136 // 5.7.3.0 (2014/02/07) labelData の null 対応 137 // 6.4.1.1 (2016/01/16) PMD refactoring. Avoid if (x != y) ..; else ..; 138 this.labelData = labelData == null ? new LabelData( name ) : labelData ; 139 this.writable = writable ; 140 this.codeData = codeData ; // 4.0.0 (2005/01/31) 141 this.dbid = dbid ; // 4.0.0 (2005/01/31) 142 143 if( "=".equals(editorPrm) ) { 144 clmData[ColumnData.EDITOR_PARAM ] = rendererPrm ; 145 } 146 else { 147 clmData[ColumnData.EDITOR_PARAM ] = editorPrm ; 148 } 149 150 // 5.1.6.0 (2010/05/01) DBTypeの初期値を "XK" とします。 151 if( dbType == null ) { 152 clmData[ColumnData.DBTYPE ] = DBType.DEF_TYPE; 153 } 154 155 this.official = official; // 3.6.0.7 (2004/11/06) 156 } 157 158 /** 159 * 簡易コンストラクター 160 * キーのみを設定して作成する、簡易的な DBColumnConfig オブジェクトを 161 * 作成します。 162 * 163 * @og.rev 3.4.0.0 (2003/09/01) 表示パラメータ、編集パラメータ、文字パラメータの追加。 164 * @og.rev 3.6.0.7 (2004/11/06) カラムリソースから作成されたかどうか(official属性追加) 165 * @og.rev 5.1.6.0 (2010/05/01) DBTypeの初期値を "XK" とします。 166 * @og.rev 5.7.3.0 (2014/02/07) labelData の null 対応 167 * @og.rev 6.2.0.0 (2015/02/27) フィールドサイズ 追加(VIEW_LENGTHと分離して、役割を明確にする) 168 * @og.rev 6.2.3.0 (2015/05/01) もう一つのコンストラクタを呼びように変更。 169 * 170 * @param name カラム名 171 */ 172 public DBColumnConfig( final String name ) { 173 this( "ja" , // lang 174 name , // name 175 new LabelData( name ) , // labelData 176 "VARCHAR2" , // className 177 null , // fieldSize 入力枠サイズ 178 null , // viewLength カラムの表示文字数 179 "60" , // maxlength カラムの最大桁数 180 "true" , // writable 181 null , // renderer 182 null , // editor 183 null , // codeData 184 DBType.DEF_TYPE , // dbType 185 "" , // dataDef 186 "" , // rendererPrm 187 "" , // editorPrm 188 "" , // dbTypePrm 189 null , // roles 190 false , // official 191 null // dbid 192 ); 193 } 194 195 /** 196 * 言語を返します。 197 * 198 * @return 言語 199 */ 200 public String getLang() { 201 return lang; 202 } 203 204 /** 205 * 言語を設定します。 206 * 207 * @param lang 言語 208 */ 209 public void setLang( final String lang ) { 210 this.lang = lang; 211 } 212 213 /** 214 * カラム名を返します。 215 * 216 * @return カラム名 217 */ 218 public String getName() { 219 return clmData[ColumnData.CLM]; 220 } 221 222 /** 223 * カラム名を設定します。 224 * 225 * @param name カラム名 226 */ 227 public void setName( final String name ) { 228 clmData[ColumnData.CLM] = name; 229 } 230 231 /** 232 * ラベル名を返します。 233 * 234 * @return ラベル名 235 */ 236 public String getLabel() { 237 return ( labelData == null ) ? clmData[ColumnData.CLM] : labelData.getLabel() ; 238 } 239 240 /** 241 * カラムのクラスを文字列にした名称を返します。 242 * 243 * @return カラムのクラスを文字列にした名称 244 */ 245 public String getClassName() { 246 return clmData[ColumnData.CLS_NAME]; 247 } 248 249 /** 250 * 現在の値と、新しい値をチェックして、条件に応じて新しい値を返します。 251 * 252 * "既存値:設定値" という指定を行えば、既存値を持っている場合のみ、設定値に置き換えます。 253 * 上位で、val が null チェックを入れていますが、汎用的に、こちらでも入れておきます。 254 * 255 * @og.rev 6.4.1.1 (2016/01/16) "既存値:設定値" という指定を行えば、既存値を持っている場合のみ、設定値に置き換えます。 256 * 257 * @param now 現在の値 258 * @param val 新しい値("既存値:設定値" と指定可能) 259 * @return 新しい値 260 */ 261 private String oldNewSplit( final String now , final String val ) { 262 final String rtn ; 263 264 if( val == null || val.length() == 0 ) { 265 rtn = now; 266 } 267 else { 268 final int ad = val.indexOf( ':' ); 269 if( ad < 0 ) { // コロンがない。通常処理 270 rtn = val; 271 } 272 else if( ad == 0 ) { // コロンが先頭。コロンをはずして、セット 273 rtn = val.substring(1); 274 } 275 else { // コロンがある。OLD:NEW 形式なので、コロンで分割 276 final String old = val.substring( 0,ad ); 277 if( old.equals( now ) ) { // 一致した。 278 rtn = val.substring( ad+1 ); 279 } 280 else { 281 rtn = now ; 282 } 283 } 284 } 285 286 return rtn ; 287 } 288 289 /** 290 * カラムのクラスを文字列にした名称を設定します。 291 * 292 * "既存値:設定値" という指定を行えば、既存値を持っている場合のみ、設定値に置き換えます。 293 * 294 * @og.rev 6.4.1.1 (2016/01/16) "既存値:設定値" という指定を行えば、既存値を持っている場合のみ、設定値に置き換えます。 295 * 296 * @param className カラムのクラス名 297 */ 298 public void setClassName( final String className ) { 299 clmData[ColumnData.CLS_NAME] = oldNewSplit( clmData[ColumnData.CLS_NAME] , className ); // 6.4.1.1 (2016/01/16) 300 } 301 302 /** 303 * カラムの入力枠サイズ(横幅)を文字数で取得します。 304 * fieldSize は、設定した場合のみ、使用できます。通常は、null が返ります。 305 * 306 * @og.rev 6.2.0.0 (2015/02/27) fieldSize 属性の追加 307 * 308 * @return カラムの入力枠サイズ 309 */ 310 public String getFieldSize() { 311 return clmData[ColumnData.FIELD_SIZE]; 312 } 313 314 /** 315 * カラムの入力枠サイズ(横幅)を文字数で設定します。 316 * 317 * 従来の #setViewLength(String) で指定していた値です。 318 * 319 * @og.rev 6.2.0.0 (2015/02/27) fieldSize 属性の追加 320 * 321 * @param fieldSize カラムの入力枠サイズ 322 */ 323 public void setFieldSize( final String fieldSize ) { 324 clmData[ColumnData.FIELD_SIZE] = fieldSize; 325 } 326 327 /** 328 * カラムの表示桁数を返します。 329 * viewLength は、設定した場合のみ、使用できます。通常は、null が返ります。 330 * 331 * @og.rev 4.0.0.0 (2005/01/31) メソッド名変更 getSize() → getViewLength() 332 * 333 * @return カラムの表示桁数 334 */ 335 public String getViewLength() { 336 return clmData[ColumnData.VIEW_LENGTH]; 337 } 338 339 /** 340 * カラムの表示桁数を設定します。 341 * 342 * @og.rev 4.0.0.0 (2005/01/31) メソッド名変更 setSize() → setViewLength() 343 * 344 * @param viewLength カラムの表示桁数 345 */ 346 public void setViewLength( final String viewLength ) { 347 clmData[ColumnData.VIEW_LENGTH] = viewLength; 348 } 349 350 /** 351 * カラムの文字桁数を返します。 352 * 353 * @og.rev 3.5.5.5 (2004/04/23) 新規追加 354 * 355 * @return カラムの文字桁数 356 */ 357 public String getMaxlength() { 358 return clmData[ColumnData.USE_LENGTH]; 359 } 360 361 /** 362 * カラムの文字桁数を設定します。 363 * 364 * @og.rev 3.5.5.5 (2004/04/23) 新規追加 365 * 366 * @param maxlength カラムの文字桁数 367 */ 368 public void setMaxlength( final String maxlength ) { 369 clmData[ColumnData.USE_LENGTH] = maxlength; 370 } 371 372 /** 373 * カラムが書き込み可能かどうか[true/false]を返します。 374 * 375 * @return カラムが書き込み可能かどうか[true/false] 376 */ 377 public boolean isWritable() { 378 return "true".equalsIgnoreCase( writable ) ; 379 } 380 381 /** 382 * カラムが書き込み可能かどうか[true/false]を設定します。 383 * 384 * @param writable 書き込み可能かどうか[true/false] 385 */ 386 public void setWritable( final String writable ) { 387 this.writable = writable; 388 } 389 390 /** 391 * データの表示用レンデラーを返します。 392 * 393 * @og.rev 3.1.0.0 (2003/03/20) Renderer をキーのみ返すように変更 394 * 395 * @return データの表示用レンデラー 396 */ 397 public String getRenderer() { 398 return clmData[ColumnData.RENDERER]; 399 } 400 401 /** 402 * データの表示用レンデラーを設定します。 403 * 404 * "既存値:設定値" という指定を行えば、既存値を持っている場合のみ、設定値に置き換えます。 405 * 406 * @og.rev 6.4.1.1 (2016/01/16) "既存値:設定値" という指定を行えば、既存値を持っている場合のみ、設定値に置き換えます。 407 * 408 * @param renderer 表示用レンデラー 409 */ 410 public void setRenderer( final String renderer ) { 411 clmData[ColumnData.RENDERER] = oldNewSplit( clmData[ColumnData.RENDERER] , renderer ); // 6.4.1.1 (2016/01/16) 412 } 413 414 /** 415 * データの編集用エディターを返します。 416 * 417 * @og.rev 3.1.0.0 (2003/03/20) Editor をキーのみ返すように変更 418 * 419 * @return データの編集用エディター 420 */ 421 public String getEditor() { 422 return clmData[ColumnData.EDITOR]; 423 } 424 425 /** 426 * データの編集用エディターを設定します。 427 * 428 * "既存値:設定値" という指定を行えば、既存値を持っている場合のみ、設定値に置き換えます。 429 * 430 * @og.rev 6.4.1.1 (2016/01/16) "既存値:設定値" という指定を行えば、既存値を持っている場合のみ、設定値に置き換えます。 431 * 432 * @param editor 編集用エディター 433 */ 434 public void setEditor( final String editor ) { 435 clmData[ColumnData.EDITOR] = oldNewSplit( clmData[ColumnData.EDITOR] , editor ); // 6.4.1.1 (2016/01/16) 436 } 437 438 /** 439 * 文字種別名を返します。 440 * 441 * @return データの文字種別 442 */ 443 public String getDbType() { 444 return clmData[ColumnData.DBTYPE]; 445 } 446 447 /** 448 * データのタイプを設定します。 449 * 450 * "既存値:設定値" という指定を行えば、既存値を持っている場合のみ、設定値に置き換えます。 451 * 452 * @og.rev 5.1.6.0 (2010/05/01) DBTypeの初期値を "XK" とします。 453 * @og.rev 6.4.1.1 (2016/01/16) "既存値:設定値" という指定を行えば、既存値を持っている場合のみ、設定値に置き換えます。 454 * 455 * @param dbType 文字種別 456 */ 457 public void setDbType( final String dbType ) { 458 clmData[ColumnData.DBTYPE] = oldNewSplit( clmData[ColumnData.DBTYPE] , (dbType == null) ? DBType.DEF_TYPE : dbType ); // 6.4.1.1 (2016/01/16) 459 } 460 461 /** 462 * カラムロールを返します。 463 * 464 * @return カラムロール 465 */ 466 public String getRoles() { 467 return clmData[ColumnData.ROLES]; 468 } 469 470 /** 471 * カラムロールを設定します。 472 * 473 * @param roles カラムロール 474 */ 475 public void setRoles( final String roles ) { 476 clmData[ColumnData.ROLES] = roles; 477 } 478 479 /** 480 * データのデフォルト値を返します。 481 * 482 * @og.rev 5.1.8.0 (2010/07/01) メソッド名変更(getDefValue ⇒ getDefault) 483 * 484 * @return データのデフォルト値 485 */ 486 public String getDefault() { 487 // 6.4.1.1 (2016/01/16) PMD refactoring. Avoid if (x != y) ..; else ..; 488 return ( clmData[ColumnData.DATA_DEFAULT] == null ) ? "" : clmData[ColumnData.DATA_DEFAULT]; 489 } 490 491 /** 492 * データのデフォルト値を設定します。 493 * 494 * @og.rev 5.1.8.0 (2010/07/01) メソッド名変更(setDefValue ⇒ setDefault) 495 * 496 * @param dataDef デフォルト値 497 */ 498 public void setDefault( final String dataDef ) { 499 clmData[ColumnData.DATA_DEFAULT] = dataDef; 500 } 501 502 /** 503 * 表示用レンデラーの追加属性を返します。 504 * 505 * @return 属性リスト 506 * @og.rtnNotNull 507 */ 508 public Attributes getRendererAttributes() { 509 return rendAttri ; 510 } 511 512 /** 513 * 表示用レンデラーの追加属性を設定します。 514 * 515 * 元のrendAttriが、何も設定されていない場合は、引数のAttributesに 516 * 置き換えます。 517 * すでに、設定済みの場合は、putAll で、すべての属性を追加します。 518 * 既存の属性は、そのまま残りますので、クリアしたい場合は、 519 * 先に、getRendererAttributes() で取り出した Attributes を、 520 * clear() してから、セットしてください。 521 * 522 * @og.rev 6.4.5.2 (2016/05/06) Attributesは、既存のAttributesに、ADDする。 523 * 524 * @param attri 属性リスト 525 */ 526 public void setRendererAttributes( final Attributes attri ) { 527 rendAttri.set( attri ); 528 } 529 530 /** 531 * 編集用エディター用の追加属性を返します。 532 * 533 * @return 追加属性 534 * @og.rtnNotNull 535 */ 536 public Attributes getEditorAttributes() { 537 return editAttri; 538 } 539 540 /** 541 * 編集用エディター用の追加属性を設定します。 542 * 543 * 元のrendAttriが、何も設定されていない場合は、引数のAttributesに 544 * 置き換えます。 545 * すでに、設定済みの場合は、putAll で、すべての属性を追加します。 546 * 既存の属性は、そのまま残りますので、クリアしたい場合は、 547 * 先に、getEditorAttributes() で取り出した Attributes を、 548 * clear() してから、セットしてください。 549 * 550 * @og.rev 6.4.5.2 (2016/05/06) Attributesは、既存のAttributesに、ADDする。 551 * 552 * @param attri 属性リスト 553 */ 554 public void setEditorAttributes( final Attributes attri ) { 555 editAttri.set( attri ); 556 } 557 558 /** 559 * 編集用エディター用の属性を削除します。 560 * 561 * 属性を、入れ替えではなく、追加したことで、削除が困難になりました。 562 * そこで、属性の削除が出来るようにします。 563 * キーとなる設定値から、値の文字列を切り取ります。 564 * class 属性など、スペース連結の場合は、問題はありませんが、カンマ連結では 565 * カンマが連続で並びますので、うまく対応できません。 566 * 属性値が、一致する場合と、val がnullの場合は、そのキー自体を削除します。 567 * 568 * @og.rev 6.8.1.4 (2017/08/25) must="false"で、setEditorAttributes の属性の取り消しが出来ないための対応。 569 * 570 * @param key 属性キー 571 * @param val 属性値 572 */ 573 public void removeEditorAttributes( final String key , final String val ) { 574 final String oldval = editAttri.get( key ); 575 // Attributes は、ConcurrentHashMap で管理しているので、oldval に null は、含みません。(が、チェックしておきます) 576 if( val != null && oldval != null && oldval.contains( val ) ) { 577 final String newval = oldval.replace( val , "" ); // val の削除 578 if( newval.trim().isEmpty() ) { 579 editAttri.remove( key ); 580 } 581 else { 582 editAttri.set( key,newval ); 583 } 584 } 585 } 586 587 /** 588 * パラメータを設定します。 589 * ここで設定された値は、すべて(表示、編集、文字)のパラメータにセットされます。 590 * 591 * @og.rev 3.4.0.0 (2003/09/01) 表示パラメータ、編集パラメータ、文字パラメータの追加。 592 * 593 * @param inParam 入力パラメータ 594 */ 595 public void setParameter( final String inParam ) { 596 clmData[ColumnData.RENDERER_PARAM] = inParam ; 597 clmData[ColumnData.EDITOR_PARAM] = inParam ; 598 clmData[ColumnData.TYPE_PARAM] = inParam ; 599 } 600 601 /** 602 * 表示用レンデラーのパラメータを取得します。 603 * 604 * @og.rev 3.4.0.0 (2003/09/01) 新規追加 605 * 606 * @return 表示用レンデラーのパラメータ 607 */ 608 public String getRendererParam() { 609 return clmData[ColumnData.RENDERER_PARAM]; 610 } 611 612 /** 613 * 表示用レンデラーのパラメータを設定します。 614 * 615 * @og.rev 3.4.0.0 (2003/09/01) 新規追加 616 * 617 * @param inParam 表示用レンデラーのパラメータ 618 */ 619 public void setRendererParam( final String inParam ) { 620 clmData[ColumnData.RENDERER_PARAM] = inParam; 621 } 622 623 /** 624 * 編集用エディターのパラメータを取得します。 625 * 626 * @og.rev 3.4.0.0 (2003/09/01) 新規追加 627 * 628 * @return 編集用エディターのパラメータ 629 */ 630 public String getEditorParam() { 631 return clmData[ColumnData.EDITOR_PARAM]; 632 } 633 634 /** 635 * 編集用エディターのパラメータを設定します。 636 * 637 * @og.rev 3.4.0.0 (2003/09/01) 新規追加 638 * 639 * @param inParam 編集用エディターのパラメータ 640 */ 641 public void setEditorParam( final String inParam ) { 642 clmData[ColumnData.EDITOR_PARAM] = inParam ; 643 } 644 645 /** 646 * データタイプのパラメータを取得します。 647 * 648 * @og.rev 3.4.0.0 (2003/09/01) 新規追加 649 * 650 * @return データタイプのパラメータ 651 */ 652 public String getDbTypeParam() { 653 return clmData[ColumnData.TYPE_PARAM]; 654 } 655 656 /** 657 * データタイプのパラメータをします。 658 * 659 * @og.rev 3.4.0.0 (2003/09/01) 新規追加 660 * 661 * @param inParam データタイプのパラメータ 662 */ 663 public void setDbTypeParam( final String inParam ) { 664 clmData[ColumnData.TYPE_PARAM] = inParam ; 665 } 666 667 /** 668 * メニューに空の選択リストを追加するかどうかを取得します。 669 * 670 * @og.rev 3.5.5.7 (2004/05/10) 新規追加 671 * 672 * @return 選択リストを追加するかどうか(true:追加する/false:追加しない) 673 */ 674 public boolean isAddNoValue() { 675 return addNoValue ; 676 } 677 678 /** 679 * メニューに空の選択リストを追加するかどうかを設定します。 680 * 681 * @og.rev 3.5.5.7 (2004/05/10) 新規追加 682 * 683 * @param add [true:追加する/false:追加しない] 684 */ 685 public void setAddNoValue( final boolean add ) { 686 this.addNoValue = add ; 687 } 688 689 /** 690 * セレクトメニューの場合、キー:ラベル形式で表示するかどうか[true/false/null]を指定します(初期値:null)。 691 * 692 * カラムがプルダウンメニュー形式の場合、キー:ラベル形式で表示するか、ラベルだけで表示するかを 693 * 選択できます。 694 * true を指定すると、「強制的に」キー:ラベル形式で表示します。 695 * false の場合は、「強制的に」ラベルのみで表示されます。 696 * 初期値の null の場合、コードリソースや、SQL文に準拠した指定通りの形式で表示します。 697 * 698 * <og:column name="CDC" addKeyLabel="true" /> 699 * 700 * @og.rev 6.0.4.0 (2014/11/28) キー:ラベル形式で表示するかどうか。新規追加 701 * 702 * @param addKeyLbl [true:キー:ラベル形式/false:ラベルのみ/null:指定通り] 703 * @see #getAddKeyLabel() 704 */ 705 public void setAddKeyLabel( final String addKeyLbl ) { 706 addKeyLabel = addKeyLbl; 707 } 708 709 /** 710 * セレクトメニューの場合、キー:ラベル形式で表示するかどうか[true/false/null]を返します。 711 * 712 * これは、上位入れ子のタグの OptionTag で、addKeyLabel を取り出して、 713 * true であれば、キー:ラベル形式 のオプションを、#addOption( String ) で 714 * 登録させます。 715 * 716 * @og.rev 6.0.4.0 (2014/11/28) キー:ラベル形式で表示するかどうか。新規追加 717 * 718 * @return true:キー:ラベル形式/false:ラベルのみ/null:指定通り 719 * @see #setAddKeyLabel( String ) 720 */ 721 public String getAddKeyLabel() { 722 return addKeyLabel; 723 } 724 725 /** 726 * セレクトメニューの場合、キーとラベルを分けて出力するかどうか[true/false]を指定します(初期値:false)。 727 * 728 * カラムがプルダウンメニュー形式の場合、ファイル出力時に、キーとラベルを分離して出力する事ができます。 729 * この属性と、addKeyLabel とは、微妙に関連していて、addKeyLabel="true" のみの場合は、 730 * キー:ラベル形式で、出力されますが、writeKeyLabel="true" も指定されている場合は、こちらが優先されます。 731 * なお、この指定が有効なのは、セレクトメニューのカラムのみです。 732 * 初期値は、false です。 733 * 734 * @og.rev 6.2.3.0 (2015/05/01) キー/ラベルで分離して出力するかどうか。 735 * 736 * @param flag キー/ラベル分離出力するかどうか [true:分離出力/false:通常] 737 */ 738 public void setWriteKeyLabel( final boolean flag ) { 739 writeKeyLabel = flag; 740 } 741 742 /** 743 * セレクトメニューの場合、キーとラベルを分けて出力するかどうか[true/false]を取得します。 744 * 745 * カラムがプルダウンメニュー形式の場合、ファイル出力時に、キーとラベルを分離して出力する事ができます。 746 * この属性と、addKeyLabel とは、微妙に関連していて、addKeyLabel="true" のみの場合は、 747 * キー:ラベル形式で、出力されますが、writeKeyLabel="true" も指定されている場合は、こちらが優先されます。 748 * なお、この指定が有効なのは、セレクトメニューのカラムのみです。 749 * 750 * @og.rev 6.2.3.0 (2015/05/01) キー/ラベルで分離して出力するかどうか。 751 * 752 * @return キー/ラベル分離出力するかどうか[true:分離出力/false:通常] 753 */ 754 public boolean isWriteKeyLabel() { 755 return writeKeyLabel ; 756 } 757 758 /** 759 * このカラムオブジェクトがカラムリソースより正式に作られたかどうかを取得します。 760 * カラムリソースが無い場合は、仮オブジェクトかデータベースメタデータより作成されます。 761 * その場合は、チェック機能が緩くなるため、正式なカラムオブジェクトと区別する為に 762 * この属性を持ちます。 763 * 764 * @og.rev 3.6.0.7 (2004/11/06) 新規追加 765 * 766 * @return カラムリソースより正式に作られたかどうか(true:正式/false:暫定) 767 */ 768 public boolean isOfficial() { 769 return official; 770 } 771 772 /** 773 * このカラムオブジェクトがカラムリソースより正式に作られたかどうかを設定します。 774 * 従来は、自動判定で、再セット不可能でしたが、動的カラムを実現する場合に、 775 * エラーチェックで引っかかるため、再設定可能にします。 776 * 777 * @og.rev 5.4.3.4 (2012/01/12) 新規追加 778 * 779 * @param official 正式かどうか [true:正式/false:暫定] 780 */ 781 public void setOfficial( final boolean official ) { 782 this.official = official ; 783 } 784 785 /** 786 * 接続先IDを設定します。 787 * 788 * @param dbid 接続先ID 789 */ 790 public void setDbid( final String dbid ) { 791 this.dbid = dbid; 792 } 793 794 /** 795 * 接続先IDを返します。 796 * 797 * @return 接続先ID 798 */ 799 public String getDbid() { 800 return dbid; 801 } 802 803 /** 804 * カラムデータオブジェクトを取得します。 805 * 806 * @return カラムデータオブジェクト 807 * @og.rtnNotNull 808 */ 809 public ColumnData getColumnData() { 810 return new ColumnData( clmData ); 811 } 812 813 /** 814 * カラムデータオブジェクトを設定します。 815 * ここでは、オブジェクトその物を持つのではなく、設定された値のみ持ちます。 816 * 817 * @param clmDt カラムデータオブジェクト 818 */ 819 public void setColumnData( final ColumnData clmDt ) { 820 clmData = clmDt.getColumnData(); 821 } 822 823 /** 824 * コードデータオブジェクトを取得します。 825 * 826 * @og.rev 4.0.0.0 (2005/01/31) 新規作成 827 * 828 * @return コードデータオブジェクト 829 */ 830 public CodeData getCodeData() { 831 return codeData; 832 } 833 834 /** 835 * コードデータオブジェクトを設定します。 836 * 837 * @og.rev 4.0.0.0 (2005/01/31) 新規作成 838 * 839 * @param codeData コードデータオブジェクト 840 */ 841 public void setCodeData( final CodeData codeData ) { 842 this.codeData = codeData; 843 } 844 845 /** 846 * ラベルデータオブジェクトを取得します。 847 * 848 * @return ラベルデータオブジェクト 849 */ 850 public LabelData getLabelData() { 851 return labelData; 852 } 853 854 /** 855 * ラベルデータオブジェクトを設定します。 856 * 857 * @param labelData ラベルデータオブジェクト 858 */ 859 public void setLabelData( final LabelData labelData ) { 860 this.labelData = labelData; 861 } 862 863 /** 864 * イベントカラム(親カラム)のセット 865 * 866 * イベントカラムをセットします。 867 * 868 * @og.rev 4.3.6.0 (2009/04/01) 869 * @param col 親カラムID 870 */ 871 public void setEventColumn( final String col ) { 872 this.eventColumn = col; 873 } 874 875 /** 876 * イベントカラム(親カラム)の取得 877 * 878 * イベントカラムを取得します。 879 * 880 * @og.rev 4.3.6.0 (2009/04/01) 881 * 882 * @return イベントカラム 883 */ 884 public String getEventColumn() { 885 return eventColumn; 886 } 887 888 /** 889 * イベントカラムの子カラムの値を出力するためのSQL文のセット 890 * 891 * イベントカラムの子カラムの値を出力するためのSQL文をセットします。 892 * 893 * @og.rev 6.3.3.0 (2015/07/25) eventValue 追加 894 * 895 * @param val イベントカラムの値SQL文 896 */ 897 public void setEventValue( final String val ) { 898 this.eventValue = val; 899 } 900 901 /** 902 * イベントカラムの子カラムの値を出力するためのSQL文の取得 903 * 904 * イベントカラムの子カラムの値を出力するためのSQL文を取得します。 905 * 906 * @og.rev 6.3.3.0 (2015/07/25) eventValue 追加 907 * 908 * @return イベントカラムの値SQL文 909 */ 910 public String getEventValue() { 911 return eventValue; 912 } 913 914 /** 915 * {@XXXX}を変換していない状態の編集パラメータ 916 * 917 * 生のパラメータを取得します。 918 * 919 * @og.rev 4.3.6.0 (2009/04/01) 920 * 921 * @return 生編集パラメータ 922 */ 923 public String getRawEditParameter() { 924 return rawEditParameter; 925 } 926 927 /** 928 * {@XXXX}を変換していない状態の表示パラメータ 929 * 930 * 生のパラメータを取得します。 931 * 932 * @og.rev 5.1.7.0 (2010/06/01) 動的プルダウン実装見直し 933 * 934 * @return 生表示パラメータ 935 */ 936 public String getRawRendParameter() { 937 return rawRendParameter; 938 } 939 940 /** 941 * {@XXXX}を変換していない状態のparameterセット用 942 * 943 * 編集種別・表示種別 944 * 生のパラメータをセットします。(編集種別・表示種別の両方に適用されます。) 945 * 946 * @og.rev 4.3.6.0 (2009/04/01) 947 * @og.rev 5.1.7.0 (2010/06/01) 動的プルダウン実装見直し 948 * 949 * @param param パラメータ 950 */ 951 public void setRawParameter( final String param ) { 952 rawEditParameter = param; 953 rawRendParameter = param; 954 } 955 956 /** 957 * {@XXXX}を変換していない状態の編集種別 parameterセット用 958 * 959 * DBColumn とのデータ変換のため、内部変数として、編集種別・表示種別を分けて管理します。 960 * 961 * @og.rev 5.1.8.0 (2010/07/01) 新規追加 962 * 963 * @param param パラメータ 964 */ 965 public void setRawEditParameter( final String param ) { 966 rawEditParameter = param; 967 } 968 969 /** 970 * {@XXXX}を変換していない状態の表示種別 parameterセット用 971 * 972 * DBColumn とのデータ変換のため、内部変数として、編集種別・表示種別を分けて管理します。 973 * 974 * @og.rev 5.1.8.0 (2010/07/01) 新規追加 975 * 976 * @param param パラメータ 977 */ 978 public void setRawRendParameter( final String param ) { 979 rawRendParameter = param; 980 } 981 982 /** 983 * イベントURLのセット。 984 * 985 * イベントカラム利用時にコールされるURLのセット 986 * 987 * @og.rev 4.3.6.0 (2009/04/01) 988 * @param url イベントURL 989 */ 990 public void setEventURL( final String url ) { 991 this.eventURL = url; 992 } 993 994 /** 995 * イベントURLの取得。 996 * 997 * eventColumn利用時のJSから呼び出すためのURL取得 998 * 999 * @og.rev 4.3.6.0 (2009/04/01) 1000 * 1001 * @return イベントURL 1002 */ 1003 public String getEventURL() { 1004 return eventURL; 1005 } 1006 1007 /** 1008 * MENU時にラベル短ベースで表示するかどうか[auto/true/その他]のコントロール 1009 * 1010 * auto/trueが有効。それ以外はfalse扱いとする。標準auto 1011 * 1012 * @og.rev 5.5.1.0 (2012/04/03) 1013 * @param use 表示するかどうか[auto/true/その他] 1014 */ 1015 public void setUseSLabel( final String use ) { 1016 this.useSLabel = use; 1017 } 1018 1019 /** 1020 * MENU時にラベル短ベースで表示するかどうかのコントロール。 1021 * 1022 * @og.rev 5.5.1.0 (2012/04/03) 1023 * 1024 * @return イベントURL 1025 */ 1026 public String getUseSLabel() { 1027 return useSLabel; 1028 } 1029 1030 /** 1031 * 非表示文字列を設定します。 1032 * 1033 * これは、例えば、数字型の場合は、0 がデフォルトなどの場合、 1034 * あえて表示したくないなどのケースに使います。 1035 * そのような状況が設定されていない場合は、null を設定してください。 1036 * 初期値は、null です。 1037 * 1038 * @og.rev 5.6.2.3 (2013/03/22) 新規追加 1039 * 1040 * @param val 非表示にする文字列 1041 */ 1042 public void setNoDisplayVal( final String val ) { 1043 this.noDisplayVal = val; 1044 } 1045 1046 /** 1047 * 非表示文字列を返します。 1048 * 1049 * これは、例えば、数字型の場合は、0 がデフォルトなどの場合、 1050 * あえて表示したくないなどのケースに使います。 1051 * そのような状況が設定されていない場合は、null が返されます。 1052 * 初期値は、null です。 1053 * 1054 * @og.rev 5.6.2.3 (2013/03/22) 新規追加 1055 * 1056 * @return 非表示文字 1057 */ 1058 public String getNoDisplayVal() { 1059 return noDisplayVal; 1060 } 1061 1062 /** 1063 * レンデラー利用ファイル出力時に数値等も文字タイプ固定にするかどうかを設定します 1064 * (初期値:USE_STRING_EXCEL_OUTPUT[={@og.value SystemData#USE_STRING_EXCEL_OUTPUT}])。 1065 * 1066 * これは、レンデラーでのExcel出力時のセルタイプに影響します。 1067 * trueの場合は数値も全て文字として出力します。 1068 * falseの場合はDBTYPEに従った出力になりるため、数値型の DBTYPE では、doubleに一度変換されます。 1069 * (初期値:USE_STRING_EXCEL_OUTPUT[={@og.value SystemData#USE_STRING_EXCEL_OUTPUT}])。 1070 * 1071 * @og.rev 5.7.6.3 (2014/05/23) 新規追加 1072 * 1073 * @param flag レンデラー利用時の出力方法 (true:String出力/false:DBTYPEに従う) 1074 */ 1075 public void setStringOutput( final boolean flag ) { 1076 stringOutput = flag; 1077 } 1078 1079 /** 1080 * レンデラー利用ファイル出力時に数値等も文字タイプ固定にするかどうか 1081 * (初期値:USE_STRING_EXCEL_OUTPUT[={@og.value SystemData#USE_STRING_EXCEL_OUTPUT}])。 1082 * 1083 * これは、レンデラーでのExcel出力時のセルタイプに影響します。 1084 * trueの場合は数値も全て文字として出力します。 1085 * falseの場合はDBTYPEに従った出力になりるため、数値型の DBTYPE では、doubleに一度変換されます。 1086 * (初期値:USE_STRING_EXCEL_OUTPUT[={@og.value SystemData#USE_STRING_EXCEL_OUTPUT}])。 1087 * 1088 * @og.rev 5.7.6.3 (2014/05/23) 新規追加 1089 * 1090 * @return レンデラー利用時の出力方法 (true:String出力/false:DBTYPEに従う) 1091 */ 1092 public boolean isStringOutput() { 1093 return stringOutput; 1094 } 1095 1096 /** 1097 * 設定値に "_" が含まれる書込み禁止カラムでかどうかを指定します。 1098 * 1099 * true に設定された場合は、#getWriteValue( String ) で、先頭のアンダーバーを 1100 * 削除して返します。 1101 * 初期値は、false:使わないです。 1102 * 1103 * @og.rev 7.0.1.5 (2018/12/10) writeCtrlで出力時のアンダーバー削除 1104 * 1105 * @param flag writableControlを使うかどうか [true:使う/false:使わない] 1106 */ 1107 public void setWriteControl( final boolean flag ) { 1108 writeCtrl = flag; 1109 } 1110 1111 /** 1112 * 設定値に "_" が含まれる書込み禁止カラムかどうかを返します。 1113 * 1114 * true に設定された場合は、#getWriteValue( String ) で、先頭のアンダーバーを 1115 * 削除して返します。 1116 * 初期値は、false:使わないです。 1117 * 1118 * @og.rev 7.0.1.5 (2018/12/10) writeCtrlで出力時のアンダーバー削除 1119 * 1120 * @return writableControlを使うかどうか [true:使う/false:使わない] 1121 */ 1122 public boolean isWriteControl() { 1123 return writeCtrl; 1124 } 1125 1126 /** 1127 * 日付送り戻し機能を有効にするかどうか[true:有効/false:無効]指定します(初期値:true)。 1128 * 1129 * @og.rev 8.1.2.3 (2022/05/20) 日付送り戻し不具合対応(useDateFeed 属性追加) 1130 * 1131 * @param flag 日付送り戻し機能有無 [true:有効/false:無効] 1132 */ 1133 public void setUseDateFeed( final boolean flag ) { 1134 this.useDateFeed = flag; 1135 } 1136 1137 /** 1138 * 日付送り戻し機能を有効にするかどうか[true:有効/false:無効]返します。 1139 * 1140 * @og.rev 8.1.2.3 (2022/05/20) 日付送り戻し不具合対応(useDateFeed 属性追加) 1141 * 1142 * @return flag 日付送り戻し機能有無 [true:有効/false:無効] 1143 */ 1144 public boolean isDateFeed() { 1145 return useDateFeed; 1146 } 1147}