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