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 static org.opengion.fukurou.util.StringUtil.nval; 019 020import java.util.ArrayList; 021import java.util.List; 022 023import org.opengion.fukurou.util.ErrorMessage; 024import org.opengion.hayabusa.common.HybsSystem; 025import org.opengion.hayabusa.common.HybsSystemException; 026import org.opengion.hayabusa.db.DBTableModel; 027import org.opengion.hayabusa.db.Query; 028import org.opengion.hayabusa.resource.GUIInfo; 029 030/** 031 * SQL文を直接指定して、データベースに追加/更新/削除を行います(queryType="JDBCTableUpdate")。 032 * 033 * 存在チェックを行う場合は、tableExist タグと併用してください。 034 * 複雑な処理が必要な場合は、従来より使用しています、PLSQLをCALLする、 035 * plsqlUpdateタグを使用してください。 036 * また、tableUpdateParam タグを使用する事で、テーブル名とsqlTypeの指定で動的に 037 * SQL文を自動生成できます。これにより、追加、更新、削除やテーブルに関して、 038 * 単一のJSP画面ですべて対応できるようになります。 039 * 040 * ※ このタグは、Transaction タグの対象です。 041 * 042 * @og.formSample 043 * ●形式:<og:tableUpdate command="…" names="…" queryType="JDBCTableUpdate" > 044 * {@SQL} 045 * </og:update> 046 * ●body:あり(EVAL_BODY_BUFFERED:BODYを評価し、{@XXXX} を解析します) 047 * 048 * ●Tag定義: 049 * <og:tableUpdate 050 * queryType 【TAG】Query を発行する為のクラスIDを指定します({@og.doc03Link queryType 初期値:JDBCTableUpdate}) 051 * sqlType 【TAG】BODY部に書かれている Param の SQLタイプを指定します 052 * command 【TAG】コマンド(NEW,RENEW)をセットします(PlsqlUpdateTag,UpdateTag の場合は、ENTRY) 053 * scope 【TAG】キャッシュする場合のスコープ[request/page/session/applicaton]を指定します(初期値:session) 054 * displayMsg 【TAG】検索結果を画面上に表示するメッセージリソースIDを指定します (初期値:VIEW_DISPLAY_MSG[=]) 055 * resourceType 【特殊】クリアするリソースの種類[GEA03/GEA04/GEA08]を指定します 056 * conditionKey 【TAG】条件判定するカラムIDを指定します(初期値:null) 057 * conditionList 【TAG】条件判定する値のリストを、"|"で区切って登録します(初期値:無条件) 058 * tableId 【TAG】(通常は使いません)結果のDBTableModelを、sessionに登録するときのキーを指定します 059 * dbid 【TAG】(通常は使いません)Queryオブジェクトを作成する時のDB接続IDを指定します 060 * selectedAll 【TAG】データを全件選択済みとして処理するかどうか[true/false]を指定します(初期値:false) 061 * commitTableModel 【特殊】SQL実行後に結果をDBTableModelに反映させるかどうか[true/false]を指定します(初期値:true) 062 * followCdkh 【TAG】DBTableModelの改廃Cに従って処理を行うかを指定します 063 * quotCheck 【TAG】リクエスト情報の クォーティション(') 存在チェックを実施するかどうか[true/false]を設定します(初期値:false) 064 * debug 【TAG】デバッグ情報を出力するかどうか[true/false]を指定します(初期値:false) 065 * > ... Body ... 066 * </og:tableUpdate> 067 * 068 * ●使用例 069 * ・QUERYを他のJSPから渡す場合 070 * 【copy.jsp】 071 * <og:hidden name="SQL" > 072 * INSERT INTO GE41 073 * (CLM,NAME_JA,LABEL_NAME,KBSAKU,SYSTEM_ID,LANG, 074 * FGJ,DYSET,DYUPD,USRSET,USRUPD,PGUPD) 075 * VALUES 076 * ([CLM],[NAME_JA],[LABEL_NAME],[KBSAKU],[SYSTEM_ID],[LANG], 077 * '1','{@USER.YMDH}','{@USER.YMDH}','{@USER.ID}','{@USER.ID}','{@GUI.KEY}') 078 * </og:value> 079 * 080 * 【entry.jsp】 081 * <og:tableUpdate 082 * command = "{@command}" 083 * queryType = "JDBCTableUpdate" 084 * {@SQL} 085 * </og:tableUpdate> 086 * 087 * ・tableUpdateParamを使用する場合 088 * 【entry.jsp】 089 * <og:tableUpdate 090 * command = "{@command}" 091 * queryType = "JDBCTableUpdate" 092 * sqlType = "{@sqlType}" // tableUpdateParam の sqlType と一致 093 * > 094 * <og:tableUpdateParam 095 * sqlType = "{@sqlType}" // INSERT,COPY,UPDATE,MODIFY,DELETE 096 * table = "{@TABLE_NAME}" // 処理対象のテーブル名 097 * names = "{@names}" // 処理対象のカラム名 098 * omitNames = "{@omitNames}" // 処理対象外のカラム名 099 * where = "{@where}" // 処理対象を特定するキー 100 * constKeys = "{@constKeys}" // 処理カラム名の中の固定情報カラム名 101 * constVals = "{@constVals}" // 処理カラム名の中の固定情報設定値 102 * /> 103 * </og:tableUpdate> 104 * 105 * ・処理の可否を指定する場合 106 * 【entry.jsp】 107 * <og:tableUpdate 108 * command = "{@command}" 109 * queryType = "JDBCTableUpdate" 110 * conditionKey ="…" : 条件判定するカラムIDを指定(初期値は columnId ) 111 * conditionList ="…" : 条件判定する値のリストを、"|"で区切って登録(初期値は、無条件) 112 * {@SQL} 113 * </og:tableUpdate> 114 * 115 * @og.rev 3.8.8.0 (2007/12/22) 新規作成 116 * @og.group DB登録 117 * 118 * @version 4.0 119 * @author Kazuhiko Hasegawa 120 * @since JDK5.0, 121 */ 122public class TableUpdateTag extends QueryTag { 123 //* このプログラムのVERSION文字列を設定します。 {@value} */ 124 private static final String VERSION = "5.1.7.0 (2010/06/01)" ; 125 126 private static final long serialVersionUID = 517020100601L ; 127 128 /** command 引数に渡す事の出来る コマンド 登録{@value} */ 129 public static final String CMD_ENTRY = "ENTRY" ; 130 /** command 引数に渡す事の出来る コマンド リスト */ 131 private static final String COMMAND_LIST = CMD_ENTRY; 132 133 // 処理を行う、リソースの種類を指定します。(GEA03,GEA04,GEA08 のどれか) 134 private String sqlType = null; // INSERT,COPY,UPDATE,MODIFY,DELETE 135 private String resourceType = null; 136 private int resTypeColNo = -1; 137 private String conditionKey = null; // 条件判定するカラムIDを指定(初期値は columnId ) 138 private String conditionList = null; // 条件判定する値のリストを、"|"で区切って登録(初期値は、無条件) 139 private boolean selectedAll = false; 140 private boolean commitTableModel= true; // 4.0.2.0 (2007/12/25) 141 private boolean followCdkh = false; // 4.3.2.0 (2008/09/09). 142 private boolean quotCheck = false; // 5.1.7.0 (2010/06/01) quotCheckを指定できるようにする。※但し、初期値はfalse固定。タイミングを見て修正要 143 144 /** 145 * Taglibの開始タグが見つかったときに処理する doStartTag() を オーバーライドします。 146 * 147 * @og.rev 4.0.0.0 (2007/11/14) 0件の場合でもstartQueryTransactionを通すように変更 148 * @og.rev 5.1.7.0 (2010/06/01) quotCheckを指定できるようにする。※但し、初期値はfalse固定。 149 * 150 * @return 後続処理の指示( EVAL_BODY_BUFFERED ) 151 */ 152 @Override 153 public int doStartTag() { 154 dyStart = System.currentTimeMillis(); 155 table = (DBTableModel)getObject( tableId ); 156 startQueryTransaction( tableId ); // 4.0.0.0 (2007/11/14) 0件の場合でもdoEndでPAGE_SKIPしないように位置変更。 157 if( table == null || table.getRowCount() == 0 || 158 ! check( command, COMMAND_LIST ) ) { return SKIP_BODY ; } 159 super.quotCheck = quotCheck; 160 161 return EVAL_BODY_BUFFERED ; // Body を評価する。( extends BodyTagSupport 時) 162 } 163 164 /** 165 * Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。 166 * 167 * @og.rev 4.0.0.0 (2007/10/18) メッセージリソース統合( getResource().getMessage ⇒ getResource().getLabel ) 168 * 169 * @return 後続処理の指示 170 */ 171 @Override 172 public int doEndTag() { 173 debugPrint(); 174 175 String label = ""; // 4.0.0 (2005/11/30) 検索しなかった場合。 176 if( check( command, COMMAND_LIST ) ) { 177 StringBuilder buf = new StringBuilder( HybsSystem.BUFFER_SMALL ); 178 if( executeCount > 0 && displayMsg != null && displayMsg.length() > 0 ) { 179 buf.append( executeCount ); 180 buf.append( getResource().getLabel( displayMsg ) ); 181 buf.append( HybsSystem.BR ); 182 } 183 184 String err = TaglibUtil.makeHTMLErrorTable( errMessage,getResource() ); 185 if( err != null && err.length() > 0 ) { 186 buf.append( err ); 187 setSessionAttribute( errMsgId,errMessage ); 188 } 189 else { 190 removeSessionAttribute( errMsgId ); 191 } 192 label = buf.toString(); 193 194 if( table != null && ! commitTableObject( tableId, table ) ) { 195 // 3.6.0.8 (2004/11/19) トランザクションチェックを行います。 196 jspPrint( "TableUpdateTag Query処理が割り込まれました。DBTableModel は登録しません。" ); 197 return SKIP_PAGE ; 198 } 199 } 200 201 jspPrint( label ); 202 203 long dyTime = System.currentTimeMillis()-dyStart; 204 jspPrint( "<div id=\"queryTime\" value=\"" + (dyTime) + "\"></div>" ); // 3.5.6.3 (2004/07/12) 205 206 // セキュリティチェック(データアクセス件数登録) 207 GUIInfo guiInfo = (GUIInfo)getSessionAttribute( HybsSystem.GUIINFO_KEY ); 208 if( guiInfo != null ) { guiInfo.addWriteCount( executeCount,dyTime,sql ); } 209 210 return ( errCode >= ErrorMessage.NG ) ? SKIP_PAGE : EVAL_PAGE ; 211 } 212 213 /** 214 * タグリブオブジェクトをリリースします。 215 * キャッシュされて再利用されるので、フィールドの初期設定を行います。 216 * 217 * @og.rev 4.0.2.0 (2007/12/25) commitTableModel追加 218 * @og.rev 4.1.2.0 (2008/03/12) sqlType追加 219 * @og.rev 5.1.7.0 (2010/06/01) quotCheckを指定できるようにする。※但し、初期値はfalse固定。 220 * 221 */ 222 @Override 223 protected void release2() { 224 super.release2(); 225 sqlType = null; // INSERT,COPY,UPDATE,MODIFY,DELETE 226 resourceType = null; 227 resTypeColNo = -1; 228 conditionKey = null; // 条件判定するカラムIDを指定(初期値は columnId ) 229 conditionList = null; // 条件判定する値のリストを、"|"で区切って登録(初期値は、無条件) 230 selectedAll = false; 231 commitTableModel= true; // 4.0.2.0 (2007/12/25) 232 followCdkh = false; // 4.3.2.0 (2008/09/09) 233 quotCheck = false; // 5.1.7.0 (2010/06/01) 234 } 235 236 /** 237 * Query を実行します。 238 * 239 * @og.rev 4.0.2.0 (2007/12/25) commitTableModel追加 240 * 241 * @param query オブジェクト 242 */ 243 @Override 244 protected void execute( final Query query ) { 245 246 try { 247 int[] rowNo = getParameterRows(); // 4.0.0 (2005/01/31) 248 if( rowNo.length > 0 ) { 249 query.execute( rowNo,table ); 250 251 errCode = query.getErrorCode(); 252 errMessage = query.getErrorMessage(); 253 254 // リソースクリア処理 255 if( resourceType != null ) { 256 resTypeColNo = table.getColumnNo( "CLM" ); // キーは、CLM 257 } 258 259 // 逆順にDELETEしないと、行番号がずれてしまう。 260 int row; 261 for( int j=rowNo.length-1; j>=0; j-- ) { 262 row = rowNo[j]; 263 if( resTypeColNo >= 0 ) { 264 clearResourceData( table.getValue( row,resTypeColNo ) ); // リソースのクリア 265 } 266 267 if( commitTableModel ) { // 4.0.2.0 (2007/12/25) 268 if( DBTableModel.DELETE_TYPE.equals( table.getModifyType( row ) ) ) { 269 table.removeValue( row ); 270 } 271 else { 272 table.resetModify( row ); 273 } 274 } 275 } 276 if( query.isUpdate() ) { query.commit(); } 277 } 278 } 279 finally { 280 if( query != null ) { query.close(); } 281 } 282 } 283 284 /** 285 * 表示データの HybsSystem.ROW_SEL_KEY を元に、選ばれた 行番号の 286 * 配列を返します。 287 * ここでは、conditionKey に値が設定されている場合は、そのカラムの値が 288 * conditionList にマッチする場合のみ対象選択行として返します。 289 * 値がセットされていない場合は、通常のCommonTagSupport#getParameterRows() 290 * が呼ばれます。 291 * なにも選ばれていない場合は、サイズ0の配列を返します。 292 * 293 * @og.rev 4.3.2.0 (2008/09/09) followCdkh属性対応 294 * 295 * @return (選ばれていない場合は、サイズ0の配列を返す) 296 */ 297 @Override 298 protected int[] getParameterRows() { 299 int[] rowNo ; 300 if( selectedAll ) { 301 int rowCnt = table.getRowCount(); // 3.5.5.7 (2004/05/10) 302 rowNo = new int[ rowCnt ]; 303 for( int i=0; i<rowCnt; i++ ) { 304 rowNo[i] = i; 305 } 306 } else { 307 rowNo = super.getParameterRows(); // 4.0.0 (2005/01/31) 308 } 309 310 if( conditionKey != null ) { 311 int col = table.getColumnNo( conditionKey ); 312 List<Integer> list = new ArrayList<Integer>(); 313 for( int i=0; i<rowNo.length; i++ ) { 314 String val = "|" + table.getValue( rowNo[i],col ) + "|"; 315 if( conditionList.indexOf( val ) >= 0 ) { 316 list.add( Integer.valueOf( rowNo[i] ) ); 317 } 318 } 319 320 int size = list.size(); 321 rowNo = new int[size]; 322 for( int i=0; i<size; i++ ) { 323 rowNo[i] = list.get(i).intValue(); 324 } 325 } 326 327 // 4.3.2.0 (2008/09/09) 328 if( sqlType != null && sqlType.length() > 0 && followCdkh ) { 329 List<Integer> flist = new ArrayList<Integer>(); 330 for( int i=0; i<rowNo.length; i++ ) { 331 String cdkh = table.getModifyType( rowNo[i] ); 332 if( ( ( "INSERT".equals( sqlType ) || "COPY".equals( sqlType ) ) 333 && DBTableModel.INSERT_TYPE.equals( cdkh ) ) 334 || 335 ( ( "UPDATE".equals( sqlType ) || "CHANGE".equals( sqlType ) ) 336 && DBTableModel.UPDATE_TYPE.equals( cdkh ) ) 337 || 338 ( ( "DELETE".equals( sqlType ) ) 339 && DBTableModel.DELETE_TYPE.equals( cdkh ) ) ) { 340 flist.add( Integer.valueOf( rowNo[i] ) ); 341 } 342 } 343 344 int size = flist.size(); 345 rowNo = new int[size]; 346 for( int i=0; i<size; i++ ) { 347 rowNo[i] = flist.get(i).intValue(); 348 } 349 } 350 351 return rowNo; 352 } 353 354 /** 355 * 【TAG】Query を発行する為のクラスIDを指定します({@og.doc03Link queryType 初期値:JDBCTableUpdate})。 356 * 357 * @og.tag 358 * 引数指定のINSERT/UPDATE文を実行する場合の、queryType 属性を使用します。 359 * このタグでは、execute( int[] ,DBTableModel )を実行します。 360 * 代表的なクラスとして、"JDBCTableUpdate" が標準で用意されています。 361 * 362 * タグにより使用できる/出来ないがありますが、これは、org.opengion.hayabusa.db 363 * 以下の Query_**** クラスの **** を与えます。 364 * これらは、Query インターフェースを継承したサブクラスです。 365 * {@og.doc03Link queryType Query_**** クラス} 366 * 367 * @param id Query を発行する為の実クラス ID 368 * @see org.opengion.hayabusa.db.Query Queryのサブクラス 369 * @see org.opengion.hayabusa.db.Query#execute( int[] ,DBTableModel ) 370 */ 371 @Override 372 public void setQueryType( final String id ) { 373 super.setQueryType( nval( id,"JDBCTableUpdate" ) ); 374 } 375 376 /** 377 * resourceType が設定されたときのみ使用される、キャッシュの初期化メソッドです。 378 * 379 * @param key 初期化を行うキー 380 */ 381 private void clearResourceData( final String key ) { 382 getResource().clear( key ); 383 } 384 385 /** 386 * 【特殊】クリアするリソースの種類[GEA03/GEA04/GEA08]を指定します。 387 * 388 * @og.tag 389 * 注意:この属性は、リソース関連DBのメンテナンス時にのみ、内部リソースキャッシュを 390 * クリアする目的で使用します。一般の属性としては、使用することはないため、 391 * ご注意ください。 392 * リソース関連のテーブルを更新した場合、リソースキャッシュをクリアして 393 * 置かないと、データベースの値が反映されません。 394 * 昔は、リソースの更新ごとに、全件クリアしていましたが、部分クリアが 395 * できるようになったため、部分クリアを行います。 396 * こでは、(GEA03,GEA04,GEA08) のどれかを指定してください。 397 * 398 * @param type クリアするリソースタイプ [GEA03/GEA04/GEA08] 399 */ 400 public void setResourceType( final String type ) { 401 resourceType = nval( getRequestParameter(type),resourceType ); 402 403 if( resourceType != null && 404 "|GEA03|GEA04|GEA08|".indexOf( "|" + resourceType + "|" ) < 0 ) { 405 String errMsg = "resourceTypeは GEA03,GEA04,GEA08 のどれかです。" 406 + "resourceType=" + type ; 407 throw new HybsSystemException( errMsg ); 408 } 409 } 410 411 /** 412 * 【TAG】条件判定するカラムIDを指定します(初期値:null)。 413 * 414 * @og.tag 415 * 指定のカラムIDの値と、conditionList の値を比較して、 416 * 存在する場合は、Query 処理を実行します。 417 * 例えば、conditionKey="CDKH" として、conditionList="A" とすれば、 418 * 改廃コードが"A"のデータで、かつ選択されたデータのみを処理します。 419 * 設定しない場合は、通常の処理と同様に、選択行のみ処理されます。 420 * 421 * @param key 条件判定するカラムID 422 * @see #setConditionList( String ) 423 */ 424 public void setConditionKey( final String key ) { 425 conditionKey = nval( getRequestParameter( key ),null ) ; 426 } 427 428 /** 429 * 【TAG】条件判定する値のリストを、"|"で区切って登録します(初期値:無条件)。 430 * 431 * @og.tag 432 * conditionKey とペアで指定します。ここには、カラムの設定値のリストを 433 * 指定することで、複数条件(OR結合)での比較を行い、リストにカラム値が 434 * 存在する場合のみ、Query 処理を実行します。 435 * 値が設定されている場合は、その値とマッチする必要があります。なにもセット 436 * されない場合、または、null の場合は、null データとマッチする場合のみ処理 437 * されますので、ご注意ください。 438 * 439 * @param list 値のリスト("|"区切) 440 * @see #setConditionKey( String ) 441 */ 442 public void setConditionList( final String list ) { 443 conditionList = "|" + nval( getRequestParameter( list ),"" ) + "|" ; 444 } 445 446 /** 447 * 【TAG】データを全件選択済みとして処理するかどうか[true/false]を指定します(初期値:false)。 448 * 449 * @og.tag 450 * 全てのデータを選択済みデータとして扱って処理します。 451 * 全件処理する場合に、(true/false)を指定します。 452 * 初期値は false です。 453 * 454 * @param all データを全件選択済み [true:全件選択済み/false:通常] 455 */ 456 public void setSelectedAll( final String all ) { 457 selectedAll = nval( getRequestParameter( all ),selectedAll ); 458 } 459 460 /** 461 * 【特殊】SQL実行後に結果をDBTableModelに反映させるかどうか[true/false]を指定します(初期値:true)。 462 * 463 * @og.tag 464 * 注意:この属性は、リソース関連DBのメンテナンス時に、複数DBへの登録を行うための、 465 * 暫定対応として定義しています。 466 * falseにした場合は、実データとDBTableModelの整合性が取れなくなるため、使用には十分注して下さい。 467 * 初期値は true です。 468 * 469 * @og.rev 4.0.2.0 (2007/12/25) 新規作成 470 * 471 * @param commitTblMdl テーブルモデルへ反映する [true:反映する/false:反映しない] 472 */ 473 public void setCommitTableModel( final String commitTblMdl ) { 474 commitTableModel = nval( getRequestParameter( commitTblMdl ),commitTableModel ); 475 } 476 477 /** 478 * 引数の名称配列 479 * 480 * @return 名称配列 481 */ 482 protected String[] getNames() { 483 return table.getNames() ; 484 } 485 486 /** 487 * 【TAG】BODY部に書かれている Param の SQLタイプを指定します。 488 * 489 * @og.tag 490 * TableUpdateParamTag は、上位の TableUpdateTag の sqlType 属性 と同じ 491 * sqlType 属性の場合のみ、SQL文を合成・出力します。 492 * つまり、TableUpdateTag側のsqlType 属性をパラメータに、TableUpdateParamTag 493 * の sqlType 属性を固定値にすることで、どのパラメータを使用するかを 494 * 選択できる機能を実現する事が可能です。 495 * 496 * @og.rev 4.1.2.0 (2008/03/12) 新規追加 497 * 498 * @param type BODY部に書かれている SQL タイプ 499 */ 500 public void setSqlType( final String type ) { 501 sqlType = nval( getRequestParameter( type ),sqlType ); 502 } 503 504 /** 505 * 【TAG】DBTableModelの改廃Cに従って処理を行うかを指定します。 506 * 507 * @og.tag 508 * この属性は、sqlTypeが指定されている場合のみ有効です。 509 * sqlTypeが指定されている場合、そのsqlTypeに対応した、改廃Cが設定されている 510 * 行のみを処理します。 511 * 対応関係は、以下の通りです。 512 * sqlType = "INSERT" or "COPY" ⇒ 改廃C='A'のみ処理 513 * sqlType = "UPDATE" or "CHANGE" ⇒ 改廃C='C'のみ処理 514 * sqlType = "DELETE" ⇒ 改廃C='D'のみ処理 515 * 516 * @og.rev 4.3.2.0 (2008/09/09) 新規追加 517 * 518 * @param flg DBTableModelの改廃Cに従って処理を行うか 519 */ 520 public void setFollowCdkh( final String flg ) { 521 followCdkh = nval( getRequestParameter( flg ),followCdkh ); 522 } 523 524 /** 525 * 【TAG】リクエスト情報の クォーティション(') 存在チェックを実施するかどうか[true/false]を設定します(初期値:false)。 526 * 527 * @og.tag 528 * SQLインジェクション対策の一つとして、暫定的ではありますが、SQLのパラメータに 529 * 渡す文字列にクォーティション(') を許さない設定にすれば、ある程度は防止できます。 530 * 数字タイプの引数には、 or 5=5 などのクォーティションを使用しないコードを埋めても、 531 * 数字チェックで検出可能です。文字タイプの場合は、必ず (')をはずして、 532 * ' or 'A' like 'A のような形式になる為、(')チェックだけでも有効です。 533 * (') が含まれていたエラーにする(true)/かノーチェックか(false)を指定します。 534 * ※(他のタグは、システムリソースのUSE_SQL_INJECTION_CHECK[={@og.value org.opengion.hayabusa.common.SystemData#USE_SQL_INJECTION_CHECK}]) 535 * ですが、JSPの互換性を考慮し、初期値を固定でfalseにしています) 536 * 537 * @og.rev 5.1.7.0 (2010/06/01) 新規追加 538 * 539 * @param flag クォーティションチェック [true:する/それ以外:しない] 540 */ 541 @Override 542 public void setQuotCheck( final String flag ) { 543 quotCheck = nval( getRequestParameter( flag ),quotCheck ); 544 } 545 546 /** 547 * SQLタイプを返します。 548 * 549 * @og.rev 4.1.2.0 (2008/03/12) 新規追加 550 * 551 * @return SQLタイプ 552 */ 553 protected String getSqlType() { 554 return sqlType ; 555 } 556 557 /** 558 * このオブジェクトの文字列表現を返します。 559 * 基本的にデバッグ目的に使用します。 560 * 561 * @og.rev 4.0.2.0 (2007/12/25) resourceColumn、commitTableModel追加 562 * 563 * @return このクラスの文字列表現 564 */ 565 @Override 566 public String toString() { 567 return org.opengion.fukurou.util.ToString.title( this.getClass().getName() ) 568 .println( "VERSION" ,VERSION ) 569 .println( "resourceType" ,resourceType ) 570 .println( "resTypeColNo" ,resTypeColNo ) 571 .println( "conditionKey" ,conditionKey ) 572 .println( "conditionList" ,conditionList ) 573 .println( "followCdkh" ,followCdkh ) 574 .println( "CMD_ENTRY" ,CMD_ENTRY ) 575 .println( "commitTabelModel",commitTableModel ) // 4.0.2.0 (2007/12/25) 576 .println( "sql" ,sql ) // 4.1.2.0 (2008/03/12) 577 .println( "Other..." ,getAttributes().getAttribute() ) 578 .fixForm().toString() 579 + HybsSystem.CR 580 + super.toString() ; 581 } 582}