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.taglib; 017 018import org.opengion.fukurou.util.ErrorMessage; 019import org.opengion.hayabusa.common.HybsSystem; 020import org.opengion.hayabusa.common.HybsSystemException; 021import org.opengion.hayabusa.db.DBTableModel; 022import org.opengion.hayabusa.db.DBMetaData; 023 024import static org.opengion.fukurou.util.StringUtil.nval ; 025 026import java.util.Locale ; 027 028/** 029 * データベース情報(DBMetaData)より、テーブル、カラム等の情報を取得するタグです。 030 * 031 * データベースに関する包括的な情報を提供する、DatabaseMetaData の内容を 032 * 取得して、DBTableModel にセットするタグです。 033 * 034 * @og.formSample 035 * ●形式:<og:dbMetaDataQuery action="・・・" ・・・ /> 036 * ●body:なし 037 * 038 * ●Tag定義: 039 * <og:dbMetaDataQuery 040 * command 【TAG】コマンド[NEW/RENEW]をセットします(初期値:NEW) 041 * action ○【TAG】アクション(SCHEMAS,TABLES,COLUMNS,INDEXINFO,PROCEDURES)を指定します(必須)。 042 * catalog 【TAG】カタログ名をセットします(初期値:null) 043 * schema 【TAG】スキーマ名パターンをセットします(初期値:null) 044 * tableName 【TAG】テーブル名パターンをセットします(初期値:null) 045 * columnName 【TAG】列名パターンをセットします(初期値:null) 046 * procName 【TAG】プロシージャ名パターンをセットします(初期値:null) 047 * unique 【TAG】返すインデックスの種類[true:ユニークのみ/false:非ユニーク含む]を指定します(初期値:false) 048 * approximate 【TAG】統計情報の精度[true:概数/false:正確]を指定します(初期値:true) 049 * scope 【TAG】キャッシュする場合のスコープ[request/page/session/applicaton]を指定します(初期値:session) 050 * displayMsg 【TAG】検索結果を画面上に表示するメッセージリソースIDを指定します(初期値:MSG0033[ 件検索しました]) 051 * notfoundMsg 【TAG】検索結果がゼロ件の場合に表示するメッセージリソースIDを指定します(初期値:MSG0077[対象データはありませんでした]) 052 * tableId 【TAG】(通常は使いません)結果をDBTableModelに書き込んで、sessionに登録するときのキーを指定します 053 * dbid 【TAG】(通常は使いません)Queryオブジェクトを作成する時のDB接続IDを指定します 054 * mainTrans 【TAG】(通常使いません)タグで処理される処理がメインとなるトランザクション処理かどうかを指定します(初期値:false) 055 * debug 【TAG】デバッグ情報を出力するかどうか[true/false]を指定します(初期値:false) 056 * /> 057 * 058 * ●使用例 059 * command属性 は、columnSetタグのcommand属性と同一の場合のみ、処理します。 060 * [command属性] 061 * NEW 新規 062 * RENEW 再検索 063 * 064 * [action属性] 065 * SCHEMAS このデータベースで使用可能なスキーマ名を取得します。 066 * TABLES 指定されたカタログで使用可能なテーブルに関する記述を取得します。 067 * COLUMNS 指定されたカタログで使用可能なテーブル列の記述を取得します。 068 * INDEXINFO 指定されたテーブルのインデックスと統計情報に関する記述を取得します。 069 * PROCEDURES 指定されたカタログで使用可能なストアドプロシージャに関する記述を取得します。 070 * 071 * @og.group DB検索 072 * 073 * @version 4.0 074 * @author Kazuhiko Hasegawa 075 * @since JDK5.0, 076 */ 077public class DBMetaDataQueryTag extends CommonTagSupport { 078 //* このプログラムのVERSION文字列を設定します。 {@value} */ 079 private static final String VERSION = "5.1.6.0 (2010/05/01)" ; 080 081 private static final long serialVersionUID = 516020100501L ; 082 083 /** command 引数に渡す事の出来る コマンド 新規 {@value} */ 084 public static final String CMD_NEW = "NEW" ; 085 /** command 引数に渡す事の出来る コマンド 再検索 {@value} */ 086 public static final String CMD_RENEW = "RENEW" ; 087 /** command 引数に渡す事の出来る コマンド リスト */ 088 private static final String[] COMMAND_LIST = new String[] { CMD_NEW , CMD_RENEW }; 089 090 /** action 引数に渡す事の出来る アクションコマンド スキーマ名 {@value} */ 091 public static final String ACT_SCHEMAS = "SCHEMAS" ; 092 /** action 引数に渡す事の出来る アクションコマンド テーブル {@value} */ 093 public static final String ACT_TABLES = "TABLES" ; 094 /** action 引数に渡す事の出来る アクションコマンド テーブル列 {@value} */ 095 public static final String ACT_COLUMNS = "COLUMNS" ; 096 /** action 引数に渡す事の出来る アクションコマンド インデックスと統計情報{@value} */ 097 public static final String ACT_INDEXINFO = "INDEXINFO" ; 098 /** action 引数に渡す事の出来る アクションコマンド ストアドプロシージャ{@value} */ 099 public static final String ACT_PROCEDURES = "PROCEDURES" ; 100 101 /** action 引数に渡す事の出来る コマンド リスト */ 102 private static final String[] ACTION_LIST = new String[] { 103 ACT_SCHEMAS , ACT_TABLES , ACT_COLUMNS , ACT_INDEXINFO , ACT_PROCEDURES }; 104 105 private String tableId = HybsSystem.TBL_MDL_KEY; 106 107 private String command = "NEW"; 108 private String action = null; // taglib で必須属性にします。 109 private long dyStart = 0; // 実行時間測定用のDIV要素 110 private String displayMsg = HybsSystem.sys( "VIEW_DISPLAY_MSG" ); 111 private String notfoundMsg = "MSG0077"; // 対象データはありませんでした。 112 113 // 4.0.0.0 (2007/10/10) dbid の初期値を、"DEFAULT" から null に変更 114 private String dbid = null; 115 private String catalog = null; 116 private String schema = null; 117 private String tableName = null; 118 private String procName = null; 119 private String columnName = null; 120 private boolean unique = false; // true:ユニークのみ / false:非ユニーク含む 121 private boolean approximate = true; // true:概数 / false:正確 122 private boolean isMainTrans = true; // 5.1.6.0 (2010/05/01) DBLastSqlの処理の見直し 123 124 /** 125 * Taglibの開始タグが見つかったときに処理する doStartTag() を オーバーライドします。 126 * 127 * @og.rev 5.1.6.0 (2010/05/01) DBLastSqlの処理は、DBTableModelが新規作成された処理でのみ行う。 128 * 129 * @return 後続処理の指示(SKIP_BODY) 130 */ 131 @Override 132 public int doStartTag() { 133 dyStart = System.currentTimeMillis(); 134 if( ! check( command, COMMAND_LIST ) ) { return SKIP_BODY ; } 135 136 useMainTrans( isMainTrans ); // 5.1.6.0 (2010/05/01) DBLastSqlの処理の見直し 137 startQueryTransaction( tableId ); // 3.6.0.8 (2004/11/19) 138 139 // 3.5.6.5 (2004/08/09) 削除するのは、セッションのオブジェクトでよい。 140 // 3.6.0.0 (2004/09/24) 削除するのは、scope="session" の場合のみ。 141 if( "session".equals( getScope() ) ) { 142 removeSessionAttribute( tableId ); 143 removeSessionAttribute( HybsSystem.VIEWFORM_KEY ); 144 } 145 146 return SKIP_BODY ; // Body を評価しない 147 } 148 149 /** 150 * Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。 151 * 152 * @og.rev 4.0.0.0 (2006/11/14) notfoundMsg 属性を追加。displayMsg は、VIEW_USE_DISPLAY_MSG で制御 153 * @og.rev 4.0.0.0 (2007/10/18) メッセージリソース統合( getResource().getMessage ⇒ getResource().getLabel ) 154 * 155 * @return 後続処理の指示 156 */ 157 @Override 158 public int doEndTag() { 159 debugPrint(); // 4.0.0 (2005/02/28) 160 161 String label = ""; // 4.0.0 (2005/11/30) 検索しなかった場合。 162 if( check( command, COMMAND_LIST ) ) { 163 StringBuilder buf = new StringBuilder( HybsSystem.BUFFER_SMALL ); 164 165 DBTableModel table = actionExec( action ); 166 int executeCount = table.getRowCount(); // 検索した数 167 168 // 実行件数の表示 command="NEW" のときのみ、displayMsg を表示させます。 169 // 4.0.0 (2005/11/30) 出力順の変更。一番最初に出力します。 170 if( CMD_NEW.equals( command ) ) { 171 if( executeCount > 0 && displayMsg != null && displayMsg.length() > 0 ) { 172 buf.append( executeCount ); 173 buf.append( getResource().getLabel( displayMsg ) ); 174 buf.append( HybsSystem.BR ); 175 } 176 else if( executeCount == 0 && notfoundMsg != null && notfoundMsg.length() > 0 ) { 177 buf.append( getResource().getLabel( notfoundMsg ) ); 178 buf.append( HybsSystem.BR ); 179 } 180 } 181 182 // 3.3.3.3 (2003/08/06) 検索結果の件数を、"DB.COUNT" キーでリクエストにセットする。 183 setRequestAttribute( "DB.COUNT" , String.valueOf( executeCount ) ); 184 // 3.3.3.3 (2003/08/06) 検索結果を、"DB.ERR_CODE" キーでリクエストにセットする。 185 setRequestAttribute( "DB.ERR_CODE", String.valueOf( ErrorMessage.OK ) ); 186 187 // オーバーフロー時のメッセージを表示 188 // if( table != null && table.isOverflow() ) { 189 // buf.append( getResource().getMessage( overflowMsg ) ); 190 // buf.append( HybsSystem.BR ); 191 // } 192 193 // 実行件数の表示 194 // 2.0.0.8 (2002/10/09) command="NEW" のときのみ、displayMsg を表示させます。 195 // if( displayMsg != null && displayMsg.length() > 0 && command.equals( CMD_NEW ) ) { 196 // buf.append( executeCount ); 197 // buf.append( getResource().getMessage( displayMsg ) ); 198 // buf.append( HybsSystem.BR ); 199 // } 200 201 label = buf.toString(); 202 203 // 3.6.0.8 (2004/11/19) トランザクションチェックを行います。 204 if( ! commitTableObject( tableId, table ) ) { 205 jspPrint( "DBMetaDataQueryTag Query処理が割り込まれました。DBTableModel は登録しません。" ); 206 return SKIP_PAGE; 207 } 208 } 209 jspPrint( label ); 210 211 // 3.5.4.7 (2004/02/06) 212 long dyTime = System.currentTimeMillis()-dyStart; 213 jspPrint( "<div id=\"queryTime\" value=\"" + (dyTime) + "\"></div>" ); // 3.5.6.3 (2004/07/12) 214 return EVAL_PAGE; 215 } 216 217 /** 218 * タグリブオブジェクトをリリースします。 219 * キャッシュされて再利用されるので、フィールドの初期設定を行います。 220 * 221 * @og.rev 4.0.0.0 (2007/10/10) dbid の初期値を、"DEFAULT" から null に変更 222 * @og.rev 5.1.6.0 (2010/05/01) DBLastSqlの処理は、DBTableModelが新規作成された処理でのみ行う。 223 */ 224 @Override 225 protected void release2() { 226 super.release2(); 227 tableId = HybsSystem.TBL_MDL_KEY; 228 dbid = null; 229 catalog = null; 230 schema = null; 231 tableName = null; 232 procName = null; 233 columnName = null; 234 unique = false; // true:ユニークのみ / false:非ユニーク含む 235 approximate = true; // true:概数 / false:正確 236 dyStart = 0; 237 displayMsg = HybsSystem.sys( "VIEW_DISPLAY_MSG" ); 238 notfoundMsg = "MSG0077"; // 対象データはありませんでした。 239 isMainTrans = true; // 5.1.6.0 (2010/05/01) DBLastSqlの処理の見直し 240 } 241 242 /** 243 * 指定のアクションを実行し、結果を、DBTableModel にセットして返します。 244 * アクションは、(SCHEMAS,TABLES,COLUMNS,INDEXINFO,PROCEDURES)を指定します。 245 * 246 * SCHEMAS このデータベースで使用可能なスキーマ名を取得します。 247 * TABLES 指定されたカタログで使用可能なテーブルに関する記述を取得します。 248 * COLUMNS 指定されたカタログで使用可能なテーブル列の記述を取得します。 249 * INDEXINFO 指定されたテーブルのインデックスと統計情報に関する記述を取得します。 250 * PROCEDURES 指定されたカタログで使用可能なストアドプロシージャに関する記述を取得します。 251 * 252 * @og.rev 3.8.7.0 (2006/12/15) アクセスログ取得の為,ApplicationInfoオブジェクトを設定 253 * 254 * @param action アクション文字列 255 * 256 * @return テーブルモデル 257 * @see <a href="../../../../constant-values.html#org.opengion.hayabusa.taglib.DBMetaDataQueryTag.ACT_COLUMNS">アクション定数</a> 258 */ 259 private DBTableModel actionExec( final String action ) { 260 DBMetaData metaData = new DBMetaData(); 261 metaData.setDbid( dbid ); 262 metaData.setResourceManager( getResource() ); 263 metaData.setApplicationInfo( getApplicationInfo() ); // 3.8.7.0 (2006/12/15) 264 265 DBTableModel tbl = null; 266 267 if( ACT_SCHEMAS.equals( action ) ) { 268 tbl = metaData.getSchemas() ; 269 } 270 else if( ACT_TABLES.equals( action ) ) { 271 tbl = metaData.getTables( catalog, schema, tableName ) ; 272 } 273 else if( ACT_COLUMNS.equals( action ) ) { 274 tbl = metaData.getColumns(catalog, schema, tableName, columnName) ; 275 } 276 else if( ACT_INDEXINFO.equals( action ) ) { 277 tbl = metaData.getIndexInfo(catalog, schema, tableName, unique, approximate) ; 278 } 279 else if( ACT_PROCEDURES.equals( action ) ) { 280 tbl = metaData.getProcedures(catalog, schema, procName) ; 281 } 282 283 return tbl ; 284 } 285 286 /** 287 * 【TAG】コマンド[NEW/RENEW]をセットします(初期値:NEW)。 288 * 289 * @og.tag 290 * コマンドは,HTMLから(get/post)指定されますので,CMD_xxx で設定される 291 * フィールド定数値のいづれかを、指定できます。 292 * 293 * @param cmd コマンド(public static final 宣言されている文字列) 294 * @see <a href="../../../../constant-values.html#org.opengion.hayabusa.taglib.DBMetaDataQueryTag.CMD_NEW">コマンド定数</a> 295 */ 296 public void setCommand( final String cmd ) { 297 String cmd2 = getRequestParameter( cmd ); 298 if( cmd2 != null && cmd2.length() > 0 ) { command = cmd2.toUpperCase(Locale.JAPAN); } 299 } 300 301 /** 302 * 【TAG】アクション(SCHEMAS,TABLES,COLUMNS,INDEXINFO,PROCEDURES)を指定します。 303 * 304 * @og.tag 305 * アクションは,HTMLから(get/post)指定されますので,ACT_xxx で設定される 306 * フィールド定数値のいづれかを、指定できます。 307 * 308 * SCHEMAS このデータベースで使用可能なスキーマ名を取得します。 309 * TABLES 指定されたカタログで使用可能なテーブルに関する記述を取得します。 310 * COLUMNS 指定されたカタログで使用可能なテーブル列の記述を取得します。 311 * INDEXINFO 指定されたテーブルのインデックスと統計情報に関する記述を取得します。 312 * PROCEDURES 指定されたカタログで使用可能なストアドプロシージャに関する記述を取得します。 313 * 314 * @param cmd アクション文字列 315 * @see <a href="../../../../constant-values.html#org.opengion.hayabusa.taglib.DBMetaDataQueryTag.ACT_COLUMNS">アクション定数</a> 316 */ 317 public void setAction( final String cmd ) { 318 action = getRequestParameter( cmd ); 319 320 if( ! check( action, ACTION_LIST ) ) { 321 322 StringBuilder errMsg = new StringBuilder( HybsSystem.BUFFER_MIDDLE ); 323 errMsg.append( "指定のアクションは実行できません。アクションエラー" ); 324 errMsg.append( HybsSystem.CR ); 325 errMsg.append( "action=[" ).append( action ).append( "] " ); 326 errMsg.append( HybsSystem.CR ); 327 328 for( int i=0; i<ACTION_LIST.length; i++ ) { 329 errMsg.append( " | " ); 330 errMsg.append( ACTION_LIST[i] ); 331 } 332 errMsg.append( " | " ); 333 throw new HybsSystemException( errMsg.toString() ); 334 } 335 } 336 337 /** 338 * 【TAG】(通常は使いません)Queryオブジェクトを作成する時のDB接続IDを指定します。 339 * 340 * @og.tag Queryオブジェクトを作成する時のDB接続IDを指定します。 341 * 342 * @param id データベース接続ID 343 */ 344 public void setDbid( final String id ) { 345 dbid = nval( getRequestParameter( id ),dbid ); 346 } 347 348 /** 349 * 【TAG】カタログ名をセットします(初期値:null)。 350 * 351 * @og.tag データベースに格納されたカタログ名と一致しなければならない。 352 * "" はカタログなしでカタログ名を検索する。 353 * null は、カタログ名を検索の限定に使用してはならないことを意味する 354 * 355 * @param catalog カタログ名 356 */ 357 public void setCatalog( final String catalog ) { 358 this.catalog = nval( getRequestParameter( catalog ),this.catalog ); 359 } 360 361 /** 362 * 【TAG】スキーマ名パターンをセットします(初期値:null)。 363 * 364 * @og.tag データベースに格納されたスキーマ名と一致しなければならない。 365 * "" はスキーマなしでスキーマ名を検索する。 366 * null は、スキーマ名を検索の限定に使用してはならないことを意味する 367 * 368 * @param schema スキーマ名パターン 369 */ 370 public void setSchema( final String schema ) { 371 this.schema = nval( getRequestParameter( schema ),this.schema ); 372 } 373 374 /** 375 * 【TAG】テーブル名パターンをセットします(初期値:null)。 376 * 377 * @og.tag 。データベースに格納されたテーブル名と一致しなければならない 378 * 379 * @param tableName テーブル名パターン 380 */ 381 public void setTableName( final String tableName ) { 382 this.tableName = nval( getRequestParameter( tableName ),this.tableName ); 383 } 384 385 /** 386 * 【TAG】プロシージャ名パターンをセットします(初期値:null)。 387 * 388 * @og.tag 。データベースに格納されたプロシージャ名と一致しなければならない 389 * 390 * @param procName プロシージャ名パターン 391 */ 392 public void setProcName( final String procName ) { 393 this.procName = nval( getRequestParameter( procName ),this.procName ); 394 } 395 396 /** 397 * 【TAG】列名パターンをセットします(初期値:null)。 398 * 399 * @og.tag データベースに格納された列名と一致しなければならない 400 * 401 * @param columnName 列名パターン 402 */ 403 public void setColumnName( final String columnName ) { 404 this.columnName = nval( getRequestParameter( columnName ),this.columnName ); 405 } 406 407 /** 408 * 【TAG】返すインデックスの種類[true:ユニークのみ/false:非ユニーク含む]を指定します(初期値:false)。 409 * 410 * @og.tag true の場合は、一意の値のインデックスだけを返す。 411 * false の場合は、一意であるかどうかにかかわらずインデックスを返す 412 * 初期値は、false:非ユニーク含む です。 413 * 414 * @param uniqFlag 返すインデックスの種類 [true:ユニークのみ/false:非ユニーク含む] 415 */ 416 public void setUnique( final String uniqFlag ) { 417 this.unique = nval( getRequestParameter( uniqFlag ),this.unique ); 418 } 419 420 /** 421 * 【TAG】統計情報の精度[true:概数/false:正確]を指定します(初期値:true)。 422 * 423 * @og.tag 指定されたテーブルのインデックスと統計情報に関する記述を取得する場合に 424 * 結果の精度を指定します。 425 * true の場合は、結果は概数またはデータ値から外れることもある。 426 * false の場合は、正確であることが要求される 427 * 初期値は、true:概数 です。 428 * 429 * @param appFlag 統計情報の精度 [true:概数/false:正確] 430 */ 431 public void setApproximate( final String appFlag ) { 432 this.approximate = nval( getRequestParameter( appFlag ),this.approximate ); 433 } 434 435 /** 436 * 【TAG】(通常は使いません)結果のDBTableModelを、sessionに登録するときのキーを指定します 437 * (初期値:HybsSystem#TBL_MDL_KEY[={@og.value org.opengion.hayabusa.common.HybsSystem#TBL_MDL_KEY}])。 438 * 439 * @og.tag 440 * 検索結果より、DBTableModelオブジェクトを作成します。これを、下流のviewタグ等に 441 * 渡す場合に、通常は、session を利用します。その場合の登録キーです。 442 * query タグを同時に実行して、結果を求める場合、同一メモリに配置される為、 443 * この tableId 属性を利用して、メモリ空間を分けます。 444 * (初期値:HybsSystem#TBL_MDL_KEY[={@og.value org.opengion.hayabusa.common.HybsSystem#TBL_MDL_KEY}])。 445 * 446 * @param id sessionに登録する時の ID 447 */ 448 public void setTableId( final String id ) { 449 this.tableId = nval( getRequestParameter( id ),tableId ); 450 } 451 452 /** 453 * 【TAG】検索結果を画面上に表示するメッセージリソースIDを指定します(初期値:MSG0033[ 件検索しました])。 454 * 455 * @og.tag 456 * ここでは、検索結果の件数や登録された件数をまず出力し、 457 * その次に、ここで指定したメッセージをリソースから取得して 458 * 表示します。 459 * 表示させたくない場合は, displayMsg = "" をセットしてください。 460 * 初期値は、検索件数を表示します。 461 * 462 * @param id ディスプレイに表示させるメッセージ ID 463 */ 464 public void setDisplayMsg( final String id ) { 465 String ids = getRequestParameter( id ); 466 if( ids != null ) { displayMsg = ids; } 467 } 468 469 /** 470 * 【TAG】検索結果がゼロ件の場合に表示するメッセージリソースIDを指定します(初期値:MSG0077[対象データはありませんでした])。 471 * 472 * @og.tag 473 * ここでは、検索結果がゼロ件の場合のみ、特別なメッセージを表示させます。 474 * 従来は、displayMsg と兼用で、『0 件検索しました』という表示でしたが、 475 * displayMsg の初期表示は、OFF になりましたので、ゼロ件の場合のみ別に表示させます。 476 * 表示させたくない場合は, notfoundMsg = "" をセットしてください。 477 * 初期値は、MSG0077[対象データはありませんでした]です。 478 * 479 * @param id ディスプレイに表示させるメッセージ ID 480 */ 481 public void setNotfoundMsg( final String id ) { 482 String ids = getRequestParameter( id ); 483 if( ids != null ) { notfoundMsg = ids; } 484 } 485 486 /** 487 * タグの名称を、返します。 488 * 自分自身のクラス名より、自動的に取り出せないため、このメソッドをオーバーライドします。 489 * 490 * @og.rev 4.0.0.0 (2005/01/31) 新規追加 491 * 492 * @return タグの名称 493 */ 494 @Override 495 protected String getTagName() { 496 return "dbMetaDataQuery" ; 497 } 498 499 /** 500 * 【TAG】(通常使いません)タグで処理される処理がメインとなるトランザクション処理かどうかを指定します(初期値:false)。 501 * 502 * @og.tag 503 * この値は、ファイルダウンロード処理に影響します。この値がtrueに指定された時にcommitされたDBTableModelが 504 * ファイルダウンロードの対象の表になります。 505 * 506 * このパラメーターは、通常、各タグにより実装され、ユーザーが指定する必要はありません。 507 * 但し、1つのJSP内でDBTableModelが複数生成される場合に、前に処理したDBTableModelについてファイルダウンロードをさせたい 508 * 場合は、後ろでDBTableModelを生成するタグで、明示的にこの値をfalseに指定することで、ファイルダウンロード処理の対象から 509 * 除外することができます。 510 * 511 * @og.rev 5.1.6.0 (2010/05/01) 新規作成 512 * 513 * @param flag メイントランザクションかどうか 514 */ 515 public void setMainTrans( final String flag ) { 516 isMainTrans = nval( getRequestParameter( flag ),isMainTrans ); 517 } 518 519 /** 520 * このオブジェクトの文字列表現を返します。 521 * 基本的にデバッグ目的に使用します。 522 * 523 * @return このクラスの文字列表現 524 */ 525 @Override 526 public String toString() { 527 return org.opengion.fukurou.util.ToString.title( this.getClass().getName() ) 528 .println( "VERSION" ,VERSION ) 529 .println( "tableId" ,tableId ) 530 .println( "command" ,command ) 531 .println( "action" ,action ) 532 .println( "dyStart" ,dyStart ) 533 .println( "displayMsg" ,displayMsg ) 534 .println( "dbid" ,dbid ) 535 .println( "catalog" ,catalog ) 536 .println( "schema" ,schema ) 537 .println( "tableName" ,tableName ) 538 .println( "procName" ,procName ) 539 .println( "columnName" ,columnName ) 540 .println( "unique" ,unique ) 541 .println( "approximate" ,approximate) 542 .println( "Other..." ,getAttributes().getAttribute() ) 543 .fixForm().toString() ; 544 } 545}