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