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