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.system.OgBuilder; // 6.4.5.0 (2016/04/08) 019import org.opengion.fukurou.model.NativeType; 020import org.opengion.fukurou.util.Attributes; 021import org.opengion.fukurou.util.ErrorMessage; 022import org.opengion.fukurou.util.TagBuffer; 023import org.opengion.fukurou.util.StringUtil; 024import org.opengion.hayabusa.common.HybsSystem; 025import org.opengion.hayabusa.common.HybsSystemException; 026import org.opengion.hayabusa.resource.CodeData; 027import org.opengion.hayabusa.resource.ColumnData; 028import org.opengion.hayabusa.resource.LabelData; 029import org.opengion.hayabusa.resource.RoleMode; 030 031/** 032 * DBType インターフェースを継承した Abstractクラスです。 033 * getRendererValue( String value ) 、getEditorValue( String value ) 、 034 * isValueChack( String ) メソッドを、サブクラスで実装する必要があります。 035 * 036 * @og.rev 3.4.0.0 (2003/09/01) 表示パラメータ、編集パラメータ、文字パラメータの追加。 037 * @og.group テーブル管理 038 * 039 * @version 4.0 040 * @author Kazuhiko Hasegawa 041 * @since JDK5.0, 042 */ 043public final class DBColumn { 044 045 private final ColumnData columnData ; 046 private final LabelData labelData ; 047 private final CodeData codeData ; 048 049 private final CellRenderer cellRenderer ; // 表示用レンデラー 050 private final CellEditor cellEditor ; // 編集用エディター 051 private final DBType dbType ; // データのタイプ 052 053 private final String lang ; // 言語 054 private final boolean writable ; // カラムが書き込み可能かどうか 055 private final String defValue ; // データのデフォルト値 056 private final Attributes rendAttri ; // 表示用レンデラー追加用属性 057 private final Attributes editAttri ; // 編集用エディター追加用属性 058 private final boolean addNoValue ; // メニューに空の選択リストを追加するかどうか // 3.5.5.7 (2004/05/10) 059 private final String addKeyLabel ; // 6.0.4.0 (2014/11/28) キー:ラベル形式で表示するかどうか 060 private final boolean writeKeyLabel ; // 6.2.3.0 (2015/05/01) 061 private final String dbid ; // データベース接続先ID 062 private final boolean official ; // カラムリソースから作成されたかどうか // 3.6.0.7 (2004/11/06) 063 064// private final int checkLevel ; // DBColumn の 整合性チェックを行うレベルを規定します。 6.9.5.0 (2018/04/23) 廃止 065 066 // 6.0.4.0 (2014/11/28) selection は、Column から取得するのではなく、Factory で作成する。 067 068 private final String eventColumn ; // 4.3.6.0 (2009/04/01) イベントカラム 069 private final String eventValue ; // 6.3.3.0 (2015/07/25) eventValue 追加 070 private final String rawEditParameter; // 4.3.6.0 (2009/04/01) {@XXXX}の変換がされていない生パラメータ 071 private final String rawRendParameter; // 5.1.7.0 (2009/04/01) {@XXXX}の変換がされていない生パラメータ 072 private final String eventURL ; // 4.3.6.0 (2009/04/01) イベントカラムで利用するURL 073 074 private final String useSLabel ; // 5.5.1.0 (2012/04/03) MENUのベース表示の切り替え 075 private final String noDisplayVal ; // 5.6.2.3 (2013/03/22) 非表示文字の設定 076 077 private final boolean stringOutput ; // 5.7.6.3 (2013/05/23) ファイルレンデラ出力時のフラグ 078 079 // ※ 内部の各属性から作り出す値です。CustomTable等では、毎回呼ばれるため、キャッシュします。 080 private String className ; // 6.4.5.0 (2016/04/08) キャッシュします。 081 082 private final boolean isNumber ; // 6.4.6.0 (2016/05/27) カラムが数値型がどうか。 083 private final boolean isDate ; // 6.4.6.0 (2016/05/27) カラムが日付型がどうか。 084 085 /** 086 * DBColumnConfig オブジェクトより作成されるコンストラクター 087 * すべての情報は、インスタンス作成時に設定します。 088 * このオブジェクトは、1度作成されると変更されることはありません。 089 * 090 * @og.rev 4.0.0.0 (2005/01/31) 新規追加 091 * @og.rev 4.0.0.0 (2007/11/07) Selectionオブジェクトをキャッシュする 092 * @og.rev 4.3.6.0 (2009/04/01) eventColumnの対応 093 * @og.rev 5.1.7.0 (2010/06/01) 動的プルダウン実装見直し 094 * @og.rev 5.5.1.0 (2012/04/03) useSLabel対応 095 * @og.rev 5.6.2.3 (2013/03/22) 非表示文字の設定。noDisplayVal追加 096 * @og.rev 5.7.3.0 (2014/02/07) SelectionFactory 対応 097 * @og.rev 5.7.6.3 (2014/05/23) stringOutput対応 098 * @og.rev 6.0.4.0 (2014/11/28) selection は、Column から取得するのではなく、Factory で作成する。 099 * @og.rev 6.0.4.0 (2014/11/28) addKeyLabel 属性を追加 100 * @og.rev 6.2.3.0 (2015/05/01) writeKeyLabel 属性を追加 101 * @og.rev 6.3.3.0 (2015/07/25) eventValue 追加 102 * @og.rev 6.4.5.2 (2016/05/06) rendAttri,editAttri は、not null にします。 103 * @og.rev 6.4.6.0 (2016/05/27) isNumber , isDate 追加。 104 * @og.rev 6.9.5.0 (2018/04/23) checkLevel 固定化(officialのみで制御します) 105 * 106 * @param lang 言語 107 * @param clmData カラムデータオブジェクト 108 * @param lblData ラベルデータオブジェクト 109 * @param cdData コードデータオブジェクト 110 */ 111 public DBColumn( final String lang, 112 final ColumnData clmData , 113 final LabelData lblData , 114 final CodeData cdData ) { 115 this.lang = lang ; 116 this.columnData = clmData ; 117 this.labelData = lblData ; 118 this.codeData = cdData ; 119 120 writable = true ; 121 122 try { 123 dbType = DBTypeFactory.newInstance( columnData.getDbType() ); 124 } 125 catch( final RuntimeException ex ) { 126 final String errMsg = "dbType の作成に失敗しました。" 127 + " name=[" + columnData.getName() + "]" 128 + " dbType=[" + columnData.getDbType() + "] " 129 + ex.getMessage(); 130 throw new HybsSystemException( errMsg,ex ); 131 } 132 133 // 6.4.5.2 (2016/05/06) rendAttri,editAttri は、not null にします。 134 rendAttri = new Attributes(); // 表示用レンデラー追加用属性 135 editAttri = new Attributes(); // 編集用エディター追加用属性 136 137 addNoValue = false ; 138 addKeyLabel = null ; // 6.0.4.0 (2014/11/28) キー:ラベル形式で表示するかどうか 139 writeKeyLabel = false ; // 6.2.3.0 (2015/05/01) writeKeyLabel 属性を追加 140 official = true ; // 3.6.0.7 (2004/11/06) 141// checkLevel = -1; 142 dbid = null ; // 標準から作成されるカラムオブジェクトは、DEFAULT 接続先を設定する。 143 144 eventColumn = null; // 4.3.6.0 (2009/04/01) 145 eventValue = null; // 6.3.3.0 (2015/07/25) eventValue 追加 146 rawEditParameter = columnData.getEditorParam(); // 4.3.6.0 (2009/04/01) 147 rawRendParameter = columnData.getRendererParam(); // 5.1.7.0 (2010/06/01) 148 eventURL = null; // 4.3.6.0 (2009/04/01) 149 150 useSLabel = "auto"; // 5.5.1.0 151 noDisplayVal= null; // 5.6.2.3 (2013/03/22) 非表示文字の設定 152 153 stringOutput = HybsSystem.sysBool( "USE_STRING_EXCEL_OUTPUT" ); // 5.7.6.3 (2014/05/23) 154 155 final String def = columnData.getDefault(); 156 // 6.4.1.1 (2016/01/16) PMD refactoring. Avoid if (x != y) ..; else ..; 157 defValue = def == null ? dbType.getDefault() : def; 158 159 // 5.7.3.0 (2014/02/07) SelectionFactory 対応 160 // 6.0.4.0 (2014/11/28) selection は、Column から取得するのではなく、Factory で作成する。 161 162 try { 163 cellRenderer = DBCellFactory.newRenderer( columnData.getRenderer(),this ); 164 cellEditor = DBCellFactory.newEditor( columnData.getEditor(), this ); 165 } 166 catch( final RuntimeException ex ) { 167 final String errMsg = "Renderer,Editor の作成に失敗しました。" 168 + " name=[" + columnData.getName() + "]" 169 + " Renderer=[" + columnData.getRenderer() + "]" 170 + " Editor=[" + columnData.getEditor() + "]" 171 + ex.getMessage(); 172 throw new HybsSystemException( errMsg,ex ); 173 } 174 175 // 6.4.6.0 (2016/05/27) isNumber , isDate 追加。 176 isNumber = StringUtil.contains( columnData.getClassName() , "NUMBER" , "INTEGER" , "DECIMAL" , "INT64" ); 177 isDate = StringUtil.contains( columnData.getClassName() , "DATE" , "TIMESTAMP" ); 178 } 179 180 /** 181 * DBColumnConfig オブジェクトより作成されるコンストラクター 182 * すべての情報は、インスタンス作成時に設定します。 183 * このオブジェクトは、1度作成されると変更されることはありません。 184 * 185 * @og.rev 4.0.0.0 (2007/11/07) Selectionオブジェクトをキャッシュする 186 * @og.rev 5.1.7.0 (2010/06/01) 動的プルダウン実装見直し 187 * @og.rev 5.1.8.0 (2010/07/01) メソッド名変更(getDefValue ⇒ getDefault) 188 * @og.rev 5.5.1.0 (2012/04/03) useSLabel対応 189 * @og.rev 5.6.2.3 (2013/03/22) 非表示文字の設定。noDisplayVal追加 190 * @og.rev 5.6.6.0 (2013/07/05) codeKeyVal 属性を使用した、Selection_KEYVAL オブジェクトの作成 191 * @og.rev 5.7.3.0 (2014/02/07) SelectionFactory 対応 192 * @og.rev 5.7.6.3 (2014/05/23) stringOutput対応 193 * @og.rev 6.0.4.0 (2014/11/28) selection は、Column から取得するのではなく、Factory で作成する。 194 * @og.rev 6.0.4.0 (2014/11/28) addKeyLabel 属性を追加 195 * @og.rev 6.2.3.0 (2015/05/01) writeKeyLabel 属性を追加 196 * @og.rev 6.3.3.0 (2015/07/25) eventValue 追加 197 * @og.rev 6.4.6.0 (2016/05/27) isNumber , isDate 追加。 198 * @og.rev 6.9.5.0 (2018/04/23) checkLevel 固定化(officialのみで制御します) 199 * 200 * @param config DBColumnConfigオブジェクト 201 */ 202 public DBColumn( final DBColumnConfig config ) { 203 lang = config.getLang() ; 204 205 columnData = config.getColumnData(); 206 labelData = config.getLabelData(); 207 codeData = config.getCodeData(); 208 209 writable = config.isWritable(); 210 dbType = DBTypeFactory.newInstance( columnData.getDbType() ); 211 rendAttri = config.getRendererAttributes(); 212 editAttri = config.getEditorAttributes(); 213 addNoValue = config.isAddNoValue(); 214 addKeyLabel = config.getAddKeyLabel(); // 6.0.4.0 (2014/11/28) キー:ラベル形式で表示するかどうか 215 writeKeyLabel = config.isWriteKeyLabel(); // 6.2.3.0 (2015/05/01) writeKeyLabel 属性を追加 216 official = config.isOfficial(); // 3.6.0.7 (2004/11/06) 217 dbid = config.getDbid(); 218 219 eventColumn = config.getEventColumn(); // 4.3.6.0 (2009/04/01) 220 eventValue = config.getEventValue(); // 6.3.3.0 (2015/07/25) eventValue 追加 221 rawEditParameter = config.getRawEditParameter(); // 4.3.6.0 (2009/04/01) 222 rawRendParameter = config.getRawRendParameter(); // 5.1.7.0 (2010/06/01) 動的プルダウン実装見直し 223 eventURL = config.getEventURL(); // 4.3.6.0 (2009/04/01) 224 225 useSLabel = config.getUseSLabel(); // 5.5.1.0 (2012/04/03) 226 noDisplayVal = config.getNoDisplayVal(); // 5.6.2.3 (2013/03/22) 非表示文字の設定 227 228 stringOutput = config.isStringOutput(); // 5.7.6.3 (2014/05/23) 229 230// // 6.9.5.0 (2018/04/23) checkLevel 固定化(officialのみで制御します) 231// // DBColumn の 整合性チェックを行うレベルを規定します。 232// final String CHECK_LEVEL = HybsSystem.sys( "DB_OFFICIAL_COLUMN_CHECK_LEVEL" ); 233// if( !official && CHECK_LEVEL != null && CHECK_LEVEL.length() > 0 ) { 234// checkLevel = Integer.parseInt( CHECK_LEVEL ); 235// } 236// else { 237// checkLevel = -1; 238// } 239 240 final String def = config.getDefault(); 241 // 6.4.1.1 (2016/01/16) PMD refactoring. Avoid if (x != y) ..; else ..; 242 defValue = def == null ? dbType.getDefault() : def; 243 244 // 5.6.6.0 (2013/07/05) codeKeyVal 属性を使用した、Selection_KEYVAL オブジェクトの作成 245 // 優先順位は、codeData オブジェクトで、codeKeyVal を利用したSelectionは、DBColumnConfig からのみ作成可能 246 // 6.0.4.0 (2014/11/28) selection は、Column から取得するのではなく、Factory で作成する。 247 248 cellRenderer = DBCellFactory.newRenderer( columnData.getRenderer(),this ); 249 cellEditor = DBCellFactory.newEditor( columnData.getEditor(), this ); 250 251 // 6.4.6.0 (2016/05/27) isNumber , isDate 追加。 252 isNumber = StringUtil.contains( columnData.getClassName() , "NUMBER" , "INTEGER" , "DECIMAL" , "INT64" ); 253 isDate = StringUtil.contains( columnData.getClassName() , "DATE" , "TIMESTAMP" ); 254 } 255 256 /** 257 * 言語を返します。 258 * 259 * @return 言語 260 */ 261 public String getLang() { 262 return lang; 263 } 264 265 /** 266 * カラム名を返します。 267 * 268 * @return カラム名 269 */ 270 public String getName() { 271 return columnData.getName(); 272 } 273 274 /** 275 * カラムのラベル名を返します。 276 * 277 * @return カラムのラベル名 278 */ 279 public String getLabel() { 280 return labelData.getLabel(); 281 } 282 283 /** 284 * カラムのラベル名を返します。 285 * 286 * @return カラムのラベル名(名前(短)) 287 */ 288 public String getShortLabel() { 289 return labelData.getShortLabel(); 290 } 291 292 /** 293 * カラムのラベル名を返します。 294 * 295 * @return カラムのラベル名(名前(長)) 296 */ 297 public String getLongLabel() { 298 return labelData.getLongLabel(); 299 } 300 301 /** 302 * カラムの概要説明を返します。 303 * 304 * @og.rev 6.8.3.1 (2017/12/01) 新規追加。 305 * 306 * @return カラムの概要説明 307 */ 308 public String getDescription() { 309 return labelData.getDescription(); 310 } 311 312 /** 313 * このカラムが、数値型かどうかを返します。 314 * 315 * ColumnDataのgetClassName() の値が、"NUMBER" , "INTEGER" , "DECIMAL" , "INT64" 316 * の場合、true:数値型 を返します。 317 * 318 * @return カラムが、数値型かどうか 319 * 320 * @og.rev 6.4.6.0 (2016/05/27) isNumber , isDate 追加。 321 */ 322 public boolean isNumberType() { 323 return isNumber; 324 } 325 326 /** 327 * このカラムが、日付型かどうかを返します。 328 * 329 * ColumnDataのgetClassName() の値が、"DATE" , "TIMESTAMP" 330 * の場合、true:数値型 を返します。 331 * 332 * @return カラムが、日付型かどうか 333 * 334 * @og.rev 6.4.6.0 (2016/05/27) isNumber , isDate 追加。 335 */ 336 public boolean isDateType() { 337 return isDate; 338 } 339 340 /** 341 * カラムのクラスを文字列にした名称を返します。 342 * 内容的には、カラムの className の値と、dbTypeの値をマージした値になります。 343 * さらに、editorAttributesの "class"キーワードの値もマージします。 344 * ただし、この値には、must属性も設定されているため、それだけは除外します。 345 * 各種スタイルを表現するのに使用します。 346 * 347 * @og.rev 6.4.4.2 (2016/04/01) editAttri に clazz属性が設定されている場合は、スペースで連結して返します。 348 * @og.rev 6.4.5.0 (2016/04/08) className , dbType , editAttriのclass属性(除くmust)をスペースで連結して返します。 349 * @og.rev 6.4.5.1 (2016/04/28) class属性の連結で、noinput も除外する。(mustAny,must,noinput が除外) 350 * @og.rev 6.4.5.2 (2016/05/06) rendAttri,editAttri は、not null にします。 351 * @og.rev 6.4.6.0 (2016/05/27) ColumnDataのclassName は使わない。 352 * @og.rev 6.4.6.1 (2016/06/03) ColumnDataのclassName 復活。BIT などは、残さないと、いけない。 353 * 354 * @return カラムのクラスを文字列にした名称(X9,X,など) 355 * @see #getDbType() 356 */ 357 public String getClassName() { 358 if( className == null ) { 359 final String dbTyp = columnData.getDbType(); 360 // 6.4.6.0 (2016/05/27) オリジナルのclassName は使わない。 361 // 6.4.6.1 (2016/06/03) 復活。BIT などは、残さないと、いけない。 362 final OgBuilder clsNmBuf = new OgBuilder() 363 .append( columnData.getClassName() ) 364 .delete( "VARCHAR2" , "NUMBER" ); 365 366 final OgBuilder edtAttBuf = new OgBuilder(); 367 // 6.4.5.2 (2016/05/06) rendAttri,editAttri は、not null にします。 368 // if( editAttri != null ) { 369 edtAttBuf.append( editAttri.get( "class" ) ) 370 // .delete( "mustAny" , "must" ); // mustAnyが先 371 .delete( "mustAny" , "must" , "noinput" ); // mustAnyが先 372 // } 373 374 className = new OgBuilder() 375 .join( " " , dbTyp , clsNmBuf , edtAttBuf ) // 6.4.6.1 (2016/06/03) 復活 376 // .join( " " , dbTyp , edtAttBuf ) // 6.4.6.0 (2016/05/27) 377 // .toString(); 378 .toString() 379 .trim() ; 380 } 381 382 return className ; 383 } 384 385 /** 386 * フィールドのデータ長を返します。 387 * 通常は、整数型の文字列とデータ長は同じですが,小数点を表すデータ長は 388 * x,y 形式の場合、x + 2 桁で表されます。(マイナス記号と小数点記号) 389 * 7,3 は、 xxxx,yyy のフォーマットで、データ長は、9 になります。 390 * 391 * @og.rev 2.1.1.2 (2002/11/21) 最大桁数入力時の桁数チェックの間違いを訂正。 392 * @og.rev 4.0.0.0 (2005/01/31) メソッド名変更 getMaxlength() → getTotalSize() 393 * 394 * @return データ長定義文字列 395 */ 396 public int getTotalSize() { 397 return columnData.getTotalSize(); 398 } 399 400 /** 401 * フィールドの使用桁数を返します。 402 * 小数指定の場合は、"7,3" のようなカンマで整数部、小数部を区切った書式になります。 403 * 7,3 は、 xxxx,yyy のフォーマットで、整数部4桁、小数部3桁を意味します。 404 * 405 * @return 使用桁数 406 */ 407 public String getMaxlength() { 408 return columnData.getMaxlength(); 409 } 410 411 /** 412 * フィールドの整数部のデータ長を返します。 413 * 通常は、整数型の文字列とデータ長は同じですが,小数点を表すデータ長は 414 * x,y 形式の場合、x - y 桁で表されます。(マイナス記号含まず) 415 * 7,3 は、 xxxx,yyy のフォーマットで、データ長は、4 になります。 416 * 417 * @return データ長定義文字列 418 */ 419 public int getSizeX() { 420 return columnData.getSizeX() ; 421 } 422 423 /** 424 * フィールドの小数部のデータ長を返します。 425 * 通常は、整数型の文字列では、0 になりますが,小数点を表すデータ長は 426 * x,y 形式の場合、y 桁で表されます。 427 * 7,3 は、 xxxx,yyy のフォーマットで、データ長は、3 になります。 428 * 429 * @return データ長定義文字列 430 */ 431 public int getSizeY() { 432 return columnData.getSizeY() ; 433 } 434 435 /** 436 * カラムの表示桁数を返します。 437 * viewLength は、設定した場合のみ、使用できます。通常は、null が返ります。 438 * 439 * @og.rev 3.5.5.5 (2004/04/23) 新規追加 440 * @og.rev 4.0.0.0 (2005/01/31) メソッド名変更 getSize() → getViewLength() 441 * 442 * @return カラムの文字桁数 443 */ 444 public String getViewLength() { 445 return columnData.getViewLength(); 446 } 447 448 /** 449 * カラムが書き込み可能かどうかを返します。 450 * 451 * @return カラムが書き込み可能かどうか 452 */ 453 public boolean isWritable() { 454 return writable; 455 } 456 457 /** 458 * データの値そのものではなく、その値のラベル文字を返します。 459 * 460 * @og.rev 3.5.5.4 (2004/04/15) value が null の場合は、""(ゼロストリング)にする。 461 * 462 * @param value 入力値 463 * 464 * @return データ表示用の文字列 465 * @og.rtnNotNull 466 */ 467 public String getRendererValue( final String value ) { 468 // 6.4.1.1 (2016/01/16) PMD refactoring. Avoid if (x != y) ..; else ..; 469 return cellRenderer.getValue( value == null ? "" : value ); 470 } 471 472 /** 473 * データ表示用のHTML文字列を作成します。 474 * 行番号毎に異なる値を返すことの出来る DBCellRenderer を使用することが出来ます。 475 * 476 * @og.rev 3.5.5.7 (2004/05/10) 行番号に無関係に、値を返すように変更します。 477 * @og.rev 4.0.0.0 (2005/11/30) 行番号に対応した値を返すように変更します。 478 * 479 * @param row 行番号 480 * @param value 入力値 481 * 482 * @return データ編集用の文字列 483 * @og.rtnNotNull 484 */ 485 public String getRendererValue( final int row,final String value ) { 486 // 6.4.1.1 (2016/01/16) PMD refactoring. Avoid if (x != y) ..; else ..; 487 return cellRenderer.getValue( row,value == null ? "" : value ); 488 } 489 490 /** 491 * データ表示用のHTML文字列を作成します。 492 * 行番号毎に異なる値を返すことの出来る DBCellRenderer を使用することが出来ます。 493 * 第3引数に、パラメータを渡すことが出来ます。これは、viewMarker で 494 * [$XXXX param] 形式を渡すことで、行単位に表示形式を変更できます。 495 * AbstractRenderer では、#getValue( String ) を呼び出しています。 496 * 497 * @og.rev 6.8.3.1 (2017/12/01) パラメータを渡せるようにします。 498 * 499 * @param row 行番号 500 * @param value 入力値 501 * @param param パラメータ 502 * 503 * @return データ編集用の文字列 504 * @og.rtnNotNull 505 */ 506 public String getRendererValue( final int row,final String value,final String param ) { 507 return cellRenderer.getValue( row,value == null ? "" : value , param ); 508 } 509 510 /** 511 * データ出力用の文字列を作成します。 512 * ファイル等に出力する形式を想定しますので、HTMLタグを含まない 513 * データを返します。 514 * 515 * writeKeyLabel == true かつ addKeyLabel == "true" の場合は、":" で分離して、 516 * ラベルのみを返します。 517 * IO側で、カラムを分けて出力するので、VAL:LBL ではなく、LBL だけ出力します。 518 * 519 * @og.rev 6.0.4.0 (2014/11/28) データ出力用のレンデラー 520 * @og.rev 6.2.3.0 (2015/05/01) writeKeyLabel 属性を追加 521 * 522 * @param value 入力値 523 * 524 * @return データ出力用の文字列 525 * @og.rtnNotNull 526 */ 527 public String getWriteValue( final String value ) { 528 529 String rtnStr = cellRenderer.getWriteValue( value ); 530 531 // writeKeyLabel == true かつ addKeyLabel == "true" の場合は、":" で分離して、ラベルのみを返します。 532 if( rtnStr != null && isWriteKeyLabel() && "true".equalsIgnoreCase( addKeyLabel ) ) { 533 final int ad = rtnStr.indexOf( ':' ); 534 if( ad >= 0 ) { rtnStr = rtnStr.substring( ad+1 ); } 535 } 536 537 return rtnStr ; 538 } 539 540 /** 541 * データ入力用の文字列を作成します。 542 * ファイル等から、読み取る場合に、このメソッド経由で、必要な形式変換を行います。 543 * 544 * 現時点では、KEY:VAL形式の Selection オブジェクト経由でデータを取り込む場合、 545 * KEY に分解処理します。 546 * 547 * @og.rev 6.2.2.0 (2015/03/27) SelectionCellEditor I/Fを追加 548 * 549 * @param value 入力値 550 * 551 * @return データ入力用の文字列 552 * @og.rtnNotNull 553 */ 554 public String getReaderValue( final String value ) { 555 String rtnVal = value; 556 if( cellEditor instanceof SelectionCellEditor ) { 557 rtnVal = ((SelectionCellEditor)cellEditor).getReaderValue( rtnVal ); 558 } 559 560 // 6.4.1.1 (2016/01/16) PMD refactoring. Avoid if (x != y) ..; else ..; 561 return rtnVal == null ? "" : rtnVal; 562 } 563 564 /** 565 * データ編集用のHTML文字列を作成します。 566 * 567 * @og.rev 3.5.5.4 (2004/04/15) value が null の場合は、""(ゼロストリング)にする。 568 * 569 * @param value 入力値 570 * 571 * @return データ編集用の文字列 572 * @og.rtnNotNull 573 */ 574 public String getEditorValue( final String value ) { 575 // 6.4.1.1 (2016/01/16) PMD refactoring. Avoid if (x != y) ..; else ..; 576 return cellEditor.getValue( value == null ? "" : value ); 577 } 578 579 /** 580 * データ編集用のHTML文字列を作成します。 581 * 行番号付の編集データを作成します。名前_行番号 で登録する為、 582 * リクエスト情報を1つ毎のフィールドで処理できます。 583 * 584 * @param row 行番号 585 * @param value 入力値 586 * 587 * @return データ編集用の文字列 588 * @og.rtnNotNull 589 */ 590 public String getEditorValue( final int row,final String value ) { 591 // 6.4.1.1 (2016/01/16) PMD refactoring. Avoid if (x != y) ..; else ..; 592 return cellEditor.getValue( row, value == null ? "" : value ); 593 } 594 595 /** 596 * データ出力用の固定長文字列を作成します。 597 * HOST送信用桁数がセットされていれば、そちらを優先します。 598 * 599 * @og.rev 3.5.4.5 (2004/01/23) エンコード指定に変更します。 600 * @og.rev 6.0.4.0 (2014/11/28) データ出力用のレンデラーと名称がかぶるので、変更します。 601 * 602 * @param value 対象の値 603 * @param encode 固定長で変換する文字エンコード 604 * 605 * @return データ編集用の文字列 606 */ 607 public String getFixedValue( final String value,final String encode ) { 608 return dbType.valueFill( value ,columnData.getSizeX(), columnData.getSizeY(), encode ); 609 } 610 611 /** 612 * データの表示用レンデラーを返します。 613 * 614 * @og.rev 3.8.0.2 (2005/07/11) 新規追加 615 * 616 * @return データの表示用レンデラー 617 */ 618 public String getRenderer() { 619 return columnData.getRenderer() ; 620 } 621 622 /** 623 * データの編集用エディターを返します。 624 * 625 * @og.rev 3.8.0.2 (2005/07/11) 新規追加 626 * 627 * @return データの編集用エディター 628 */ 629 public String getEditor() { 630 return columnData.getEditor() ; 631 } 632 633 /** 634 * 文字種別名を返します。 635 * カラムの文字種別名名称を返します。 636 * これは,HTML上の各種タグに,データベース定義に応じたクラスを 637 * セットし,CSS(Cascading Style Sheet)の class="xxxxx" とする事により 638 * 各種スタイルを表現するのに使用します。 639 * 640 * ここでは, カラムリソースの DBTYPE 属性で指定の文字列(X,S9,KXなど)を返します。 641 * 642 * @return データの文字種別(X,KX,S9 など) 643 */ 644 public String getDbType() { 645 return columnData.getDbType() ; 646 } 647 648 /** 649 * データのNATIVEの型の識別コードを返します。 650 * 651 * @og.rev 4.1.1.2 (2008/02/28) Enum型(fukurou.model.NativeType)に変更 652 * 653 * @return NATIVEの型の識別コード(DBType で規定) 654 * @see org.opengion.fukurou.model.NativeType 655 */ 656 public NativeType getNativeType() { 657 return dbType.getNativeType(); 658 } 659 660 /** 661 * そのカラムの,デフォルト値の値を返します。 662 * 663 * カラムリソースに デフォルト情報が登録されている場合は,その値を返します。 664 * デフォルト値が設定されていない場合は, null を返します。 665 * 666 * @return デフォルト値(無ければ null) 667 */ 668 public String getDefault() { 669 return defValue; 670 } 671 672 /** 673 * 表示用レンデラーのパラメータを取得します。 674 * 675 * @og.rev 3.4.0.0 (2003/09/01) 新規追加 676 * 677 * @return 表示用レンデラーのパラメータ 678 */ 679 public String getRendererParam() { 680 return columnData.getRendererParam(); 681 } 682 683 /** 684 * 編集用エディターのパラメータを取得します。 685 * 686 * @og.rev 3.4.0.0 (2003/09/01) 新規追加 687 * 688 * @return 編集用エディターのパラメータ 689 */ 690 public String getEditorParam() { 691 return columnData.getEditorParam(); 692 } 693 694 /** 695 * データタイプのパラメータを取得します。 696 * 697 * @og.rev 3.4.0.0 (2003/09/01) 新規追加 698 * 699 * @return データタイプのパラメータ 700 */ 701 public String getDbTypeParam() { 702 return columnData.getDbTypeParam(); 703 } 704 705 /** 706 * カラムロールを取得します。 707 * 708 * @og.rev 4.0.0.0 (2005/11/30) 新規追加 709 * 710 * @return カラムロール 711 */ 712 public String getRoles() { 713 return columnData.getRoles(); 714 } 715 716 /** 717 * カラムオブジェクトのロールモードを返します。 718 * 719 * @og.rev 4.3.0.0 (2008/07/04) ロールモードマルチ対応 720 * 721 * @return カラムオブジェクトのロールモード 722 */ 723 public RoleMode getRoleMode() { 724 return columnData.getRoleMode(); 725 } 726 727 /** 728 * 接続先IDを返します。 729 * 730 * @return 接続先ID 731 */ 732 public String getDbid() { 733 return dbid; 734 } 735 736 /** 737 * String引数の文字列を+1した文字列を返します。 738 * これは、英字の場合(A,B,C など)は、B,C,D のように,最終桁の文字コードを 739 * +1 します。 740 * 文字列が数字タイプの場合は, 数字に変換して、+1 します。(桁上がりもあり) 741 * 混在タイプの場合は,最後の桁だけを確認して +1します。 742 * 引数が null の場合と、ゼロ文字列("")の場合は,引数を,そのまま返します。 743 * 744 * ※ 機能拡張:第2引数に指定の文字列(数字、日付等)を指定する事で、 745 * 引数の文字列に、任意の値を加算できるようにします。 746 * ただし、すべての DBTypeではなく、ある程度特定します。 747 * 対象外の DBTypeで、第2引数が null 出ない場合は、Exception を Throwsします。 748 * 第2引数が、null の場合は、従来と同じ+1します。 749 * 750 * @og.rev 5.6.0.3 (2012/01/24) ADD に、引数の値を加算する機能を追加します。 751 * 752 * @param value 引数の文字列 753 * @param add 加算する文字列(null の場合は、従来と同じ、+1 します。) 754 * 755 * @return 引数の文字列を+1した文字列。または、任意の値を加算した文字列。 756 */ 757 public String valueAdd( final String value,final String add ) { 758 // DBType の実装の関係で、旧メソッドは残しておきます。 759 // 6.4.1.1 (2016/01/16) PMD refactoring. A method should have only one exit point, and that should be the last statement in the method 760 return add == null || add.isEmpty() ? dbType.valueAdd( value ) : dbType.valueAdd( value , add ); 761 762 } 763 764 /** 765 * データが登録可能かどうかをチェックします。 766 * データがエラーの場合は、そのエラー内容を返します。 767 * 768 * @og.rev 3.6.0.0 (2004/09/22) dbType パラメータを引数に追加 769 * @og.rev 3.6.0.7 (2004/11/06) official属性がfalseの場合、チェックレベルに対応したチェックを行う。 770 * @og.rev 3.8.0.8 (2005/10/03) 企画改善 61200-050921-02 ラベルからHTMLタグを削除する。 771 * @og.rev 5.2.2.0 (2010/11/01) 内部処理を、#valueCheck( value , true ) に委譲。 772 * 773 * @param value チェック対象の値 774 * 775 * @return エラー内容 正常時は null 776 * @see #valueCheck( String , boolean ) 777 */ 778 public ErrorMessage valueCheck( final String value ) { 779 return valueCheck( value , true ); 780 } 781 782 /** 783 * データが登録可能かどうかをチェックします。 784 * データがエラーの場合は、そのエラー内容を返します。 785 * 786 * @og.rev 3.6.0.0 (2004/09/22) dbType パラメータを引数に追加 787 * @og.rev 3.6.0.7 (2004/11/06) official属性がfalseの場合、チェックレベルに対応したチェックを行う。 788 * @og.rev 3.8.0.8 (2005/10/03) 企画改善 61200-050921-02 ラベルからHTMLタグを削除する。 789 * @og.rev 5.2.2.0 (2010/11/01) 厳密にチェック(isStrict=true)するフラグを追加 790 * @og.rev 6.9.5.0 (2018/04/23) checkLevel 固定化(officialのみで制御します) 791 * 792 * @param value チェック対象の値 793 * @param isStrict 厳密にチェック(isStrict=true)するかどうか 794 * 795 * @return エラー内容 正常時は null 796 */ 797 public ErrorMessage valueCheck( final String value , final boolean isStrict ) { 798 // 3.8.0.8 (2005/10/03) ラベルからHTMLタグを削除する。 799 String lbl = labelData.getLabel() ; 800 if( lbl.indexOf( '<' ) >= 0 ) { 801 lbl = lbl.replaceAll( "<[^>]*>","" ); 802 } 803 804 // 5.2.2.0 (2010/11/01) 厳密にチェック(isStrict=true)するフラグを追加 805 final ErrorMessage errMsg = dbType.valueCheck( lbl,value,columnData.getSizeX(), columnData.getSizeY(),columnData.getDbTypeParam() , isStrict ); 806// if( checkLevel >= 0 ) { 807 if( !official ) { 808 // ERR0034:指定のカラムオブジェクトには、カラムリソースが存在しません。name={0} label={1} 809// errMsg.addMessage( 0,checkLevel,"ERR0034", columnData.getName(),labelData.getLabel() ); 810 errMsg.addMessage( 0,ErrorMessage.WARNING,"ERR0034", columnData.getName(),labelData.getLabel() ); // 6.9.5.0 (2018/04/23) checkLevel 固定化 811 } 812 return errMsg ; 813 } 814 815 /** 816 * エディターで編集されたデータを登録する場合に、データそのものを 817 * 変換して、実登録データを作成します。 818 * 例えば,大文字のみのフィールドなら、大文字化します。 819 * 実登録データの作成は、DBType オブジェクトを利用しますので, 820 * これと DBCellEditor とがアンマッチの場合は、うまくデータ変換 821 * されない可能性がありますので、注意願います。 822 * 823 * @param value 一般に編集データとして登録されたデータ 824 * 825 * @return 修正後の文字列(一般にデータベースに登録するデータ) 826 */ 827 public String valueSet( final String value ) { 828 return dbType.valueSet( value ); 829 } 830 831 /** 832 * action で指定されたコマンドを実行して、値の変換を行います。 833 * oldValue(旧データ)は、元のDBTableModelに設定されていた値です。通常は、 834 * この値を使用してカラム毎に変換を行います。newValue(新データ)は、引数で 835 * 指定された新しい値です。この値には、パラメータを指定して変換方法を 836 * 制御することも可能です。 837 * 指定のアクションがカラムで処理できない場合は、エラーになります。 838 * 839 * @param action アクションコマンド 840 * @param oldValue 入力データ(旧データ) 841 * @param newValue 入力データ(新データ) 842 * 843 * @return 実行後のデータ 844 */ 845 public String valueAction( final String action,final String oldValue,final String newValue ) { 846 return dbType.valueAction( action,oldValue,newValue ); 847 } 848 849 /** 850 * 内部の設定情報オブジェクトを返します。 851 * このオブジェクトを ローカルで書き換えて、DBColumn を作るようにします。 852 * 853 * @og.rev 3.1.0.0 (2003/03/20) DBColumnConfig 関係の見直し。 854 * @og.rev 3.4.0.0 (2003/09/01) 表示パラメータ、編集パラメータ、文字パラメータの追加。 855 * @og.rev 3.5.5.5 (2004/04/23) size 属性の意味を変更、maxlength 属性を追加。 856 * @og.rev 3.5.5.8 (2004/05/20) codeName 属性を追加。 857 * @og.rev 3.6.0.7 (2004/11/06) カラムリソースから作成されたかどうか(official属性追加) 858 * @og.rev 5.1.8.0 (2010/07/01) すべての属性を設定するようにします。 859 * @og.rev 5.5.1.0 (2012/04/03) useSLabel対応 860 * @og.rev 5.6.2.3 (2013/03/22) 非表示文字の設定。noDisplayVal追加 861 * @og.rev 5.7.6.3 (2014/05/23) stringOutput対応 862 * @og.rev 6.2.0.0 (2015/02/27) フィールドサイズ 追加(VIEW_LENGTHと分離して、役割を明確にする) 863 * @og.rev 6.2.3.0 (2015/05/01) writeKeyLabel 属性を追加 864 * @og.rev 6.3.3.0 (2015/07/25) eventValue 追加 865 * 866 * @return 設定情報オブジェクト 867 */ 868 public DBColumnConfig getConfig() { 869 // 互換性確保のため、DBColumnConfig の コンストラクタは修正していません。 870 871 final DBColumnConfig config = 872 new DBColumnConfig( 873 lang , 874 columnData.getName() , 875 labelData , 876 columnData.getClassName() , 877 columnData.getFieldSize() , // 6.2.0.0 (2015/02/27) 878 columnData.getViewLength() , // 6.2.0.0 (2015/02/27) 879 columnData.getMaxlength() , 880 String.valueOf( writable ) , 881 columnData.getRenderer() , 882 columnData.getEditor() , 883 codeData , 884 columnData.getDbType() , 885 defValue , 886 columnData.getRendererParam() , 887 columnData.getEditorParam() , 888 columnData.getDbTypeParam() , 889 columnData.getRoles() , // 4.0.0 (2005/11/30) 890 official , // 3.6.0.7 (2004/11/06) 891 dbid ) ; 892 893 // 5.1.8.0 (2010/07/01) すべての属性を設定するようにします。 894 // コンストラクタは修正していないため、セッターメソッド経由で渡します。 895 config.setRendererAttributes( rendAttri ); 896 config.setEditorAttributes( editAttri ); 897 config.setAddNoValue( addNoValue ); 898 config.setAddKeyLabel( addKeyLabel ); // 6.0.4.0 (2014/11/28) キー:ラベル形式で表示するかどうか 899 config.setWriteKeyLabel( writeKeyLabel ); // 6.2.3.0 (2015/05/01) 900 config.setEventColumn( eventColumn ); 901 config.setEventValue( eventValue ); // 6.3.3.0 (2015/07/25) eventValue 追加 902 config.setRawEditParameter( rawEditParameter ); 903 config.setRawRendParameter( rawRendParameter ); 904 config.setEventURL( eventURL ); 905 config.setUseSLabel( useSLabel ); // 5.5.1.0 (2012/04/03) 906 config.setNoDisplayVal( noDisplayVal ); // 5.6.2.3 (2013/03/22) 非表示文字の設定 907 config.setStringOutput( stringOutput ); // 5.7.6.3 (2014/05/23) 908 909 return config ; 910 } 911 912 /** 913 * 表示用レンデラーの追加属性を返します。 914 * 915 * @og.rev 3.1.0.0 (2003/03/20) DBColumnConfig オブジェクトの内部キープを廃止 916 * 917 * @return 属性リスト 918 * @og.rtnNotNull 919 */ 920 public Attributes getRendererAttributes() { 921 return rendAttri ; 922 } 923 924 /** 925 * 編集用エディター用の追加属性を返します。 926 * 927 * @og.rev 3.1.0.0 (2003/03/20) DBColumnConfig オブジェクトの内部キープを廃止 928 * 929 * @return 属性リスト 930 * @og.rtnNotNull 931 */ 932 public Attributes getEditorAttributes() { 933 return editAttri ; 934 } 935 936 /** 937 * メニューに空の選択リストを追加するかどうかを取得します。 938 * 939 * @og.rev 3.5.5.7 (2004/05/10) 新規追加 940 * 941 * @return 空の選択リストを追加するかどうか(true:追加する/false:追加しない) 942 */ 943 public boolean isAddNoValue() { 944 return addNoValue ; 945 } 946 947 /** 948 * セレクトメニューの場合、キー:ラベル形式で表示するかどうか[true/false/null]を返します。 949 * 950 * これは、上位入れ子のタグの OptionTag で、addKeyLabel を取り出して、 951 * true であれば、キー:ラベル形式 のオプションを、#addOption( String ) で 952 * 登録させます。 953 * 954 * @og.rev 6.0.4.0 (2014/11/28) キー:ラベル形式で表示するかどうか。新規追加 955 * 956 * @return true:キー:ラベル形式/false:ラベルのみ/null:指定通り 957 */ 958 public String getAddKeyLabel() { 959 return addKeyLabel; 960 } 961 962 /** 963 * セレクトメニューの場合、キーとラベルを分けて出力するかどうか[true/false]を取得します。 964 * 965 * カラムがプルダウンメニュー形式の場合、ファイル出力時に、キーとラベルを分離して出力する事ができます。 966 * この属性と、addKeyLabel とは、微妙に関連していて、addKeyLabel="true" のみの場合は、 967 * キー:ラベル形式で、出力されますが、writeKeyLabel="true" も指定されている場合は、こちらが優先されます。 968 * なお、この指定が有効なのは、セレクトメニューのカラムのみです。 969 * 970 * @og.rev 6.2.3.0 (2015/05/01) キー/ラベルで分離して出力するかどうか。 971 * 972 * @return キー/ラベル分離出力するかどうか[true:分離出力/false:通常] 973 */ 974 public boolean isWriteKeyLabel() { 975 return writeKeyLabel ; 976 } 977 978 /** 979 * このカラムオブジェクトがカラムリソースより正式に作られたかどうかを取得します。 980 * カラムリソースが無い場合は、仮オブジェクトかデータベースメタデータより作成されます。 981 * その場合は、チェック機能が緩くなるため、正式なカラムオブジェクトと区別する為に 982 * この属性を持ちます。 983 * 984 * @og.rev 3.6.0.7 (2004/11/06) 新規追加 985 * 986 * @return 正式に作られたかどうか(true:正式/false:暫定) 987 */ 988 public boolean isOfficial() { 989 return official ; 990 } 991 992 /** 993 * カラムのラベルデータオブジェクトを返します。 994 * 995 * @return カラムのラベルデータオブジェクト 996 */ 997 public LabelData getLabelData() { 998 return labelData; 999 } 1000 1001 /** 1002 * カラムのコードデータオブジェクトを返します。 1003 * コードデータが存在しない場合は、null を返します。 1004 * 受け取り側で、null かどうか判定してから使用してください。 1005 * 1006 * @og.rev 5.2.1.0 (2010/10/01) codeData が null でも、そのまま返します。 1007 * 1008 * @return カラムのコードデータオブジェクト 1009 */ 1010 public CodeData getCodeData() { 1011 return codeData; 1012 } 1013 1014 /** 1015 * フィールドの入力枠サイズを返します。 1016 * 1017 * これは、設定された値そのものを返しますので、未設定の時は、null が返ります。 1018 * 1019 * テキストフィールドのサイズに該当します。 1020 * 何も指定しない場合は、null が返ります。 1021 * その場合の、入力枠サイズは、maxlength が使用されます。 1022 * ただし、桁数が大きい場合は、システム定数の HTML_COLUMNS_MAXSIZE や、 1023 * HTML_VIEW_COLUMNS_MAXSIZE で指定された値が使われます。 1024 * それらの値よりも、ここで取得 した fieldSize が優先されます。 1025 * 1026 * @og.rev 6.2.0.0 (2015/02/27) フィールドサイズ 追加(VIEW_LENGTHと分離して、役割を明確にする) 1027 * 1028 * @return 入力枠サイズ 1029 */ 1030 public String getFieldSize() { 1031 return columnData.getFieldSize(); 1032 } 1033 1034 /** 1035 * 引数の最大入力サイズより、実際のフィールドのサイズを求めます。 1036 * 1037 * 計算方法 1038 * ① fieldSize があれば、その値を返します。 1039 * ② ColumnData#getTotalSize() を求め、あれば、その値を返す。 1040 * ③ totalSizeが、引数の最大入力サイズより大きい場合は、引数の最大入力サイズを返す。 1041 * 1042 * 各呼び出すメソッドは、引数の最大入力サイズ のみ指定します。それ以外の値は、内部の値を使います。 1043 * 最大入力サイズは、システム定数の、HTML_COLUMNS_MAXSIZE か、HTML_VIEW_COLUMNS_MAXSIZE が 1044 * 一般的です。 1045 * 1046 * @og.rev 4.0.0.0 (2005/01/31) getFieldSize メソッドを XHTMLTag から DBColumn へ移動 1047 * @og.rev 4.0.0.0 (2007/02/05) ADJUSTMENT 処理を廃止します。(CSSにて対応) 1048 * @og.rev 6.2.0.0 (2015/02/27) フィールドサイズ 追加(VIEW_LENGTHと分離して、役割を明確にする) 1049 * @og.rev 6.2.3.0 (2015/05/01) maxlength 変数は、0 の場合は、無制限になります。 1050 * 1051 * @param maxlength 最大入力サイズ 1052 * 1053 * @return 表示すべきサイズ 1054 * @see #getFieldSize() 1055 */ 1056 public int getFieldSize( final int maxlength ) { 1057 1058 // ① fieldSize があれば、その値を返します。 1059 final String fixSize = columnData.getFieldSize(); 1060 if( fixSize != null && !fixSize.isEmpty() ) { 1061 return Integer.parseInt( fixSize ); 1062 } 1063 1064 // ② ColumnData#getTotalSize() を求め、あれば、その値を返す。 1065 int size = columnData.getTotalSize(); 1066 1067 // ③ totalSizeが、引数の最大入力サイズより大きい場合は、引数の最大入力サイズを返す。 1068 if( maxlength > 0 && ( size <= 0 || size > maxlength ) ) { 1069 size = maxlength; 1070 } 1071 1072 return size; 1073 } 1074 1075 /** 1076 * イベントカラム(親カラム)。 1077 * 1078 * @og.rev 4.3.6.0 (2009/04/01) 1079 * 1080 * @return イベントカラム 1081 */ 1082 public String getEventColumn() { 1083 return eventColumn ; 1084 } 1085 1086 /** 1087 * イベントカラムの子カラムの値を出力するためのSQL文を返します。 1088 * 1089 * @og.rev 6.3.3.0 (2015/07/25) eventValue 追加 1090 * 1091 * @return イベントカラムの値SQL文 1092 */ 1093 public String getEventValue() { 1094 return eventValue ; 1095 } 1096 1097 /** 1098 * {@XXXX}を変換していない状態の編集パラメータを返します。 1099 * 1100 * @og.rev 4.3.6.0 (2009/04/01) 1101 * 1102 * @return 生編集パラメータ 1103 */ 1104 public String getRawEditParam() { 1105 return rawEditParameter ; 1106 } 1107 1108 /** 1109 * {@XXXX}を変換していない状態の編集パラメータを返します。 1110 * 1111 * @og.rev 5.1.7.0 (2010/06/01) 動的プルダウン実装見直し 1112 * 1113 * @return 生表示パラメータ 1114 */ 1115 public String getRawRendParam() { 1116 return rawRendParameter ; 1117 } 1118 1119 /** 1120 * eventColumn利用時にJSで利用するURL。 1121 * 1122 * @og.rev 4.3.6.0 (2009/04/01) 1123 * 1124 * @return イベントURL 1125 */ 1126 public String getEventURL() { 1127 return eventURL ; 1128 } 1129 1130 /** 1131 * 引数のタグ文字列に対して、イベントカラムの実行に必要なspanタグを付加した 1132 * 文字列を返します。 1133 * 1134 * @param tag タグ文字列 1135 * @param initVal 子カラムの初期値 1136 * @param writable タグの要素が書き込み可能かどうか 1137 * 1138 * @return spanタグを付加したタグ文字列 1139 */ 1140 public String getEventColumnTag( final String tag, final String initVal, final boolean writable ) { 1141 return getEventColumnTag( tag, initVal, -1, writable ); 1142 } 1143 1144 /** 1145 * 引数のタグ文字列に対して、イベントカラムの実行に必要なspanタグを付加した 1146 * 文字列を返します。 1147 * 1148 * @param tag タグ文字列 1149 * @param initVal 子カラムの初期値 1150 * @param row 行番号 1151 * @param writable タグの要素が書き込み可能かどうか 1152 * 1153 * @return spanタグを付加したタグ文字列 1154 * @og.rtnNotNull 1155 */ 1156 public String getEventColumnTag( final String tag, final String initVal, final int row, final boolean writable ) { 1157 // 6.1.1.0 (2015/01/17) TagBufferの連結記述 1158 final String name = columnData.getName() 1159 + ( row < 0 ? "" : HybsSystem.JOINT_STRING + row ) ; 1160 1161 return new TagBuffer( "span" ) 1162 .add( "class" , HybsSystem.EVENT_COLUMN_CLASS ) 1163 .add( HybsSystem.EVENT_COLUMN_ID , name ) 1164 .add( HybsSystem.EVENT_COLUMN_INITVAL , initVal ) 1165 .add( HybsSystem.EVENT_COLUMN_WRITABLE , String.valueOf( writable ) ) 1166 .addBody( tag ) 1167 .makeTag(); 1168 1169 } 1170 1171 /** 1172 * セットされている表示パラメータ、編集パラメータに"{@XXXX}"が含まれているか(パラメーターのパースが必要か)を 1173 * 返します。 1174 * 1175 * @og.rev 6.0.0.1 (2014/04/25) 内部処理変更 1176 * 1177 * @return "{@XXXX}"が含まれているか(含まれている場合true) 1178 */ 1179 public boolean isNeedsParamParse() { 1180 return rawRendParameter != null && rawRendParameter.indexOf( "{@" ) >= 0 1181 || rawEditParameter != null && rawEditParameter.indexOf( "{@" ) >= 0; 1182 } 1183 1184 /** 1185 * ラベル短ベースのメニューにするかどうか。 1186 * 1187 * @og.rev 5.5.1.0 (2012/04/03) 1188 * 1189 * @return イベントカラム 1190 */ 1191 public String getUseSLabel() { 1192 return useSLabel ; 1193 } 1194 1195 /** 1196 * 非表示文字列を返します。 1197 * 1198 * これは、例えば、数字型の場合は、0 がデフォルトなどの場合、 1199 * あえて表示したくないなどのケースに使います。 1200 * そのような状況が設定されていない場合は、null が返されます。 1201 * 1202 * @og.rev 5.6.2.3 (2013/03/22) 新規追加 1203 * 1204 * @return 非表示文字 1205 */ 1206 public String getNoDisplayVal() { 1207 return noDisplayVal ; 1208 } 1209 1210 /** 1211 * レンデラー利用ファイル出力時に数値等も文字タイプに固定するかどうか 1212 * (初期値:USE_STRING_EXCEL_OUTPUT[={@og.value SystemData#USE_STRING_EXCEL_OUTPUT}])。 1213 * 1214 * これは、レンデラーでのExcel出力時のセルタイプに影響します。 1215 * trueの場合は数値も全て文字として出力します。 1216 * falseの場合はDBTYPEに従った出力になりるため、数値型の DBTYPE では、doubleに一度変換されます。 1217 * (初期値:USE_STRING_EXCEL_OUTPUT[={@og.value SystemData#USE_STRING_EXCEL_OUTPUT}])。 1218 * 1219 * @og.rev 5.7.6.3 (2014/05/23) 新規追加 1220 * 1221 * @return レンデラー利用時の出力方法 (true:String出力/false:DBTYPEに従う) 1222 */ 1223 public boolean isStringOutput() { 1224 return stringOutput ; 1225 } 1226 1227// /** 1228// * マルチ・キーセレクトを使用するかどうかを返します。 1229// * true:使用する。false:使用しない です。 1230// * ただし、実際に使用するかどうかは、HTML出力時に決めることが出来ます。 1231// * ここでは、USE_MULTI_KEY_SELECT が true で、USE_SIZE(=20)以上の場合に 1232// * true を返します。 1233// * 1234// * @og.rev 6.0.4.0 (2014/11/28) Selection 側から移動。 1235// * @og.rev 6.3.9.1 (2015/11/27) 3項演算子を || or && で簡素化できる(PMD)。 1236// * @og.rev 6.9.5.0 (2018/04/23) USE_MULTI_KEY_SELECT 廃止(IE8以降ブラウザ標準) 1237// * 1238// * @return 選択リストで、マルチ・キーセレクトを使用するかどうか(true:使用する) 1239// */ 1240// public boolean useMultiSelect() { 1241// return codeData != null && codeData.useMultiSelect() ; 1242// } 1243 1244 /** 1245 * オブジェクトの文字列表現を返します。 1246 * 1247 * n=Name,l=Label,c=ClassName,r=Renderer,e=Editor,d=DbType という形式を作成します。 1248 * 1249 * @og.rev 6.2.2.0 (2015/03/27) DBColumnオブジェクトの文字列表現(#toString())を実装します。 1250 * 1251 * @return 文字列表現 1252 * @og.rtnNotNull 1253 */ 1254 @Override 1255 public String toString() { 1256 return "n=" + columnData.getName() 1257 + ",l=" + labelData.getLabel() 1258 + ",c=" + columnData.getClassName() 1259 + ",r=" + columnData.getRenderer() 1260 + ",e=" + columnData.getEditor() 1261 + ",d=" + columnData.getDbType() ; 1262 } 1263}