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.hayabusa.common.HybsSystem; 019import org.opengion.hayabusa.common.HybsSystemException; 020import org.opengion.hayabusa.db.DBTableModel; 021import org.opengion.hayabusa.resource.GUIInfo; 022import org.opengion.fukurou.util.XHTMLTag; 023import org.opengion.fukurou.util.StringUtil; 024import org.opengion.fukurou.util.ToString; // 6.1.1.0 (2015/01/17) 025 026import static org.opengion.fukurou.util.StringUtil.nval ; 027 028/** 029 * フレームを作成するHTML拡張タグで、引数の受け渡しが可能です。 030 * 031 * @og.formSample 032 * ●形式:<og:frame src="…" name="…" /> 033 * ●body:なし 034 * 035 * ●Tag定義: 036 * <og:frame 037 * src ○【HTML】フレームに表示するソースファイルを指定します(必須)。 038 * name ○【HTML】フレーム名を指定します(例:QUERY,RESULT,CONTENTS など)(必須)。 039 * changeGamen 【TAG】ソース指定の画面を変更します 040 * changeHref 【TAG】forwardしたいJSPファイル名を記述します(例:result など) 7.4.2.0 (2021/05/14) 041 * keys 【TAG】引数のキーを指定します 042 * vals 【TAG】引数の値を指定します 7.4.3.0 (2021/06/11) 043 * dbTable 【TAG】前ページで選択したデータ列の情報を次のページに渡すかどうか[true/false]を指定します(初期値:false) 044 * longdesc 【HTML】フレームに関する詳しい説明のあるURL(lobgdesc)を指定します 045 * forceEnc 【TAG】(通常は使いません) valsの値が[で開始している場合でもURLEncodeを通すかを設定します(初期値:false) 5.10.15.3 (2019/09/27) 046 * id 【HTML】要素に対して固有の名前(id)をつける場合に設定します 047 * clazz 【HTML】要素に対して class 属性を設定します 048 * title 【HTML】要素に対する補足的情報(title)を設定します 049 * style 【HTML】この要素に対して適用させるスタイルシート(style)を設定します 050 * caseKey 【TAG】このタグ自体を利用するかどうかの条件キーを指定します(初期値:null) 5.7.7.2 (2014/06/20) 051 * caseVal 【TAG】このタグ自体を利用するかどうかの条件値を指定します(初期値:null) 5.7.7.2 (2014/06/20) 052 * caseNN 【TAG】指定の値が、null/ゼロ文字列 でない場合(Not Null=NN)は、このタグは使用されます(初期値:判定しない) 5.7.7.2 (2014/06/20) 053 * caseNull 【TAG】指定の値が、null/ゼロ文字列 の場合は、このタグは使用されます(初期値:判定しない) 5.7.7.2 (2014/06/20) 054 * caseIf 【TAG】指定の値が、true/TRUE文字列の場合は、このタグは使用されます(初期値:判定しない) 055 * debug 【TAG】デバッグ情報を出力するかどうか[true/false]を指定します(初期値:false) 056 * /> 057 * 058 * 【廃止】7.0.1.0 (2018/10/15) 物理削除 059 * // marginwidth 【廃止】フレームの左右余白サイズ(marginwidth)を指定します(HTML5廃止属性) 060 * // marginheight 【廃止】フレームの上下余白サイズ(marginheight)を指定します(HTML5廃止属性) 061 * // noresize 【廃止】フレームサイズを変更できないよう(noresize)に指定します(HTML5廃止属性) 6.9.5.0 (2018/04/23) 物理削除 062 * // frameborder 【廃止】フレームの境界線(frameborder)の[0:非表示/1:表示]を指定します(初期値:1)(HTML5廃止属性) 6.9.5.0 (2018/04/23) 物理削除 063 * // scrolling 【廃止】スクロールバー(scrolling)の表示/非表示[auto/yes/no]を指定します(初期値:auto)(HTML5廃止属性) 064 * 065 * ●使用例: 066 * ・一般的な例:フレーム分割する構文は、HTML準拠。リクエスト変数は各フレームまで転送されます。 067 * <frameset> 068 * <og:frame src="query.jsp" name="QUERY" /> 069 * <og:frame src="forward.jsp" name="RESULT" /> 070 * </frameset> 071 * 072 * ・DBTableModel の値(例ではPN)を、取り出して、リクエスト変数として利用します。 073 * 現状では、commonForward タグ の useTableData="true" dbkeys="{@dbkeys}" 属性を利用します。 074 * <frameset> 075 * <og:frame src="query.jsp" name="QUERY" keys="PN" dbTable="true" /> 076 * <og:frame src="forward.jsp" name="RESULT" keys="PN" dbTable="true" /> 077 * </frameset> 078 * 079 * ・changeGamen 属性を利用して、ソース指定の画面を切り替えます。 080 * たとえば、jsp/index.jsp では、GAMENID属性がURLに存在する場合、直接その画面を 081 * 表示させることができます。 082 * <frameset cols="160,*,0" frameborder="1" framespacing="1"> 083 * <og:frame src="menu/menu.jsp" name="MENU" /> 084 * <og:frame src="GE0000/index.jsp" name="CONTENTS" keys="PN" vals="LKIS" changeGamen="{@GAMENID}" /> 085 * </frameset> 086 * 087 * @og.group 画面部品 088 * 089 * @version 4.0 090 * @author Kazuhiko Hasegawa 091 * @since JDK5.0, 092 */ 093public class FrameTag extends HTMLTagSupport { 094 /** このプログラムのVERSION文字列を設定します。 {@value} */ 095 private static final String VERSION = "8.3.0.0 (2022/08/01)" ; 096 private static final long serialVersionUID = 830020220801L ; 097 098 private String tableId = HybsSystem.TBL_MDL_KEY; 099 private String changeGmn ; 100 private String changeHref = "index"; // 7.4.2.0 (2021/05/14) 101 private String keys ; 102 private String vals ; // 7.4.3.0 (2021/06/11) 103 private transient DBTableModel table; 104 private boolean dbTable ; 105 106 // 3.5.2.0 (2003/10/20) システムパラメータ の FRAME_UNDER_BAR_REQUEST_KEY_USED を使用。 107 private final boolean UNDER_BAR_KEY_USED = HybsSystem.sysBool( "FRAME_UNDER_BAR_REQUEST_KEY_USED" ); 108 /** 強制URLエンコード用 */ 109 protected boolean useForceEnc ; // 5.10.15.3 (2019/09/27) 強制URLエンコード用 110 111 /** 112 * デフォルトコンストラクター 113 * 114 * @og.rev 6.4.2.0 (2016/01/29) PMD refactoring. Each class should declare at least one constructor. 115 */ 116 public FrameTag() { super(); } // これも、自動的に呼ばれるが、空のメソッドを作成すると警告されるので、明示的にしておきます。 117 118 /** 119 * タグリブオブジェクトをリリースします。 120 * キャッシュされて再利用されるので、フィールドの初期設定を行います。 121 * 122 * @og.rev 2.0.0.4 (2002/09/27) カスタムタグの release() メソッドを、追加 123 * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応。release2() を doEndTag()で呼ぶ。 124 * @og.rev 5.10.15.3 (2019/09/27) forceEnc追加 125 * @og.rev 7.4.3.0 (2021/06/11) URL の引数にセットする値を指定する 126 * 127 */ 128 @Override 129 protected void release2() { 130 super.release2(); 131 tableId = HybsSystem.TBL_MDL_KEY; 132 changeGmn = null; // 4.0.0 (2005/02/28) 133 changeHref = "index"; // 7.4.2.0 (2021/05/14) 134 keys = null; 135 vals = null; // 7.4.3.0 (2021/06/11) 136 table = null; 137 dbTable = false; 138 useForceEnc = false; // 5.10.15.3 (2019/09/27) 139 } 140 141 /** 142 * リンクを作成します。 143 * 144 * @og.rev 3.5.4.0 (2003/11/25) comand="RENEW" 時には、dbTable 属性は、強制的に false とします。 145 * @og.rev 5.9.1.2 (2015/10/23) iframeとの継承関係で、共通的に呼び出すメソッドを追加します。 146 * @og.rev 8.3.0.0 (2022/08/01) title 属性が未設定の場合、name 属性を設定する。 147 * 148 * @return リンクタグ文字列 149 * @og.rtnNotNull 150 */ 151 @Override 152 protected String makeTag() { 153 // 7.4.2.0 (2021/05/14) MOD 154 if( changeGmn != null ) { 155 final GUIInfo guiInfo = getGUIInfo( changeGmn ); 156 if( guiInfo != null && guiInfo.getAddress() != null && guiInfo.getAddress().length() > 0 ) { // 見つからない場合は、アクセス不可 157 changeGmn = guiInfo.getRealAddress( changeHref ) + ".jsp" ; 158 } 159 set( "src",changeGmn ); 160 } 161// if( changeGmn != null ) { set( "src",changeGmn ); } 7.4.2.0 (2021/05/14) DEL 162 163 final String cmd = getRequest().getParameter( "command" ); 164 if( "RENEW".equals( cmd ) ) { dbTable = false; } 165 166 setIdName(); 167 168 // 8.3.0.0 (2022/08/01) title 属性が未設定の場合、name 属性を設定する。 169 if( get( "title" ) == null ) { set( "title",get( "name" ) ); } 170 171 final String urlEnc = getUrlEncode(); 172 return makeTagFrame( urlEnc ); 173 } 174 175 /** 176 * リンクを作成します。 177 * 178 * @og.rev 5.9.1.2 (2015/10/23) iframeとの継承関係で、共通的に呼び出すメソッドを追加します。 179 * 180 * @param urlEnc エンコードされたURL 181 * @return リンクタグ文字列 182 * @og.rtnNotNull 183 */ 184 protected String makeTagFrame( final String urlEnc ) { 185 return XHTMLTag.frame( getAttributes(),urlEnc ); 186 } 187 188 /** 189 * id 属性 / name 属性 セット 190 * 191 * フレーム名は id 属性で登録する(XHTML) 互換性のため、 192 * id 属性と name 属性には同じ値をセットしておく。 193 * 194 */ 195 private void setIdName() { 196 final String idno = get( "id" ); 197 final String name = get( "name" ); 198 if( idno == null || idno.isEmpty() ) { 199 if( name != null && name.length() > 0 ) { 200 set( "id", name ); 201 } 202 else { 203 final String errMsg = "id 属性か name 属性のどちらかは登録してください。"; 204 throw new HybsSystemException( errMsg ); 205 } 206 } 207 else { 208 set( "name", idno ); 209 } 210 } 211 212 /** 213 * keys 属性 を元に、request情報より values の値を取り込む。 214 * 215 * keys属性は キー情報がCSV形式になっている為、ばらして 216 * values属性の配列に一つづつ設定していきます。 217 * 218 * @og.rev 2.0.0.2 (2002/09/24) 検索結果の値を取り込めていなかったバグを修正。 219 * @og.rev 2.1.1.1 (2002/11/15) 選択行情報を取り込めていなかったバグを修正。 220 * @og.rev 3.4.0.3 (2003/09/10) DBTableModelへのリクエスト情報をURLに連結しないように変更。 221 * @og.rev 4.0.0.0 (2005/01/31) getParameterRows() を使用するように変更 222 * @og.rev 5.10.15.3 (2019/09/27) forceEnc追加 223 * @og.rev 7.4.3.0 (2021/06/11) URL の引数にセットする値を指定する 224 * 225 * @return URLエンコードされた文字列 226 * @og.rtnNotNull 227 */ 228// private String getUrlEncode() { 229 protected String getUrlEncode() { 230 final int[] rowNo = getParameterRows(); // 4.0.0 (2005/01/31) 231 final int selcount = rowNo.length; // 4.0.0 (2005/01/31) 232 233 final String[] key = (String[])StringUtil.enume2Array( getParameterNames(), new String[0] ); 234 String[] prmKey = null; // 7.4.3.0 (2021/06/11) MOD dbkey ⇒ prmKey 235 String[] prmVal = null; // 7.4.3.0 (2021/06/11) ADD 236 237 int dbcount = 0; 238 int prmcount = 0; // 7.4.3.0 (2021/06/11) ADD 239 240 int recount = 0; 241 for( int i=0; i<key.length; i++ ) { 242 if( isNormalRequestKey( key[i] ) ) { // 3.4.0.3 (2003/09/10) 243 recount++; 244 } 245 } 246 247// if( keys != null && dbTable && selcount > 0 ) { // 7.4.3.0 (2021/06/11) MOD 248 if( keys != null && dbTable && selcount > 0 && vals == null ) { 249 prmKey = StringUtil.csv2Array( keys ); 250 dbcount = prmKey.length; 251 } 252 // 7.4.3.0 (2021/06/11) ADD 253 else if( keys != null && vals != null ) { 254 prmKey = StringUtil.csv2Array( keys ); 255 prmVal = StringUtil.csv2Array( vals ); 256 prmcount = prmKey.length; 257 } 258 259// String[] valt = new String[ recount + dbcount + selcount ]; // 7.4.3.0 (2021/06/11) MOD 260// String[] keyt = new String[ recount + dbcount + selcount ]; // 7.4.3.0 (2021/06/11) MOD 261 String[] valt = new String[ recount + dbcount + selcount + prmcount ]; 262 String[] keyt = new String[ recount + dbcount + selcount + prmcount ]; 263 264 int j = 0; 265 // ① 0~recount 266 for( int i=0; i<key.length; i++ ) { 267 if( isNormalRequestKey( key[i] ) ) { // 3.4.0.3 (2003/09/10) 268 keyt[j] = key[i]; 269 valt[j] = getRequestValue( key[i] ); 270 j++; 271 } 272 } 273 274 // ② recount~dbcount 275 if( dbTable && dbcount > 0 ) { 276 table = (DBTableModel)getSessionAttribute( tableId ); 277 if( table != null ) { 278 for( int i=0; i<dbcount; i++ ) { 279 keyt[recount + i] = prmKey[i]; 280 valt[recount +i] = table.getValue(rowNo[0],table.getColumnNo( prmKey[i] )); 281 } 282 } 283 } 284 285 // ③ dbcount~selcount 286 // 4.0.0 (2005/01/31) selected文字配列をrowNo数字配列に変更 287 for( int i=0; i<selcount; i++ ) { 288 keyt[recount + dbcount + i] = HybsSystem.ROW_SEL_KEY; 289 valt[recount + dbcount + i] = String.valueOf( rowNo[i] ); 290 } 291 292 // ④ selcount~prmcount 7.4.3.0 (2021/06/11) ADD 293 if( keys != null && vals != null ) { 294 for( int i=0; i<prmcount; i++ ) { 295 keyt[recount + dbcount + selcount + i] = prmKey[i]; 296 valt[recount + dbcount + selcount + i] = prmVal[i]; 297 } 298 } 299 300// return XHTMLTag.urlEncode( keyt,val ); 301 return XHTMLTag.urlEncode( keyt,valt,"&",useForceEnc ); // 5.10.15.3 (2019/09/27) 302 } 303 304 /** 305 * 【HTML】フレームに表示するソースファイルを指定します。 306 * 307 * @og.tag フレームに表示するソースファイルを指定します。 308 * 309 * @param src ソースファイル 310 */ 311 public void setSrc( final String src ) { 312 set( "src",getRequestParameter( src ) ); 313 } 314 315 /** 316 * 【HTML】フレーム名を指定します(例:QUERY,RESULT,CONTENTS など)。 317 * 318 * @og.tag フレーム名を指定します。 319 * 320 * @param name フレーム名 321 */ 322 public void setName( final String name ) { 323 set( "name",getRequestParameter( name ) ); 324 } 325 326 /** 327 * 【HTML】フレームに関する詳しい説明のあるURL(lobgdesc)を指定します。 328 * 329 * @og.tag lobgdescを指定します。 330 * 331 * @param longdesc 詳しい説明のあるURL 332 */ 333 public void setLongdesc( final String longdesc ) { 334 set( "longdesc",getRequestParameter( longdesc ) ); 335 } 336 337 /** 338 * 【TAG】valsの値が[で開始している場合でもURLEncodeを通すかを設定します(初期値:false)。 339 * 340 * @og.tag 341 * テーブルモデルの値の変換のため、通常は先頭が[の場合はエンコードがかかりません。 342 * 強制的にかける場合にtrueにします。 343 * 344 * @og.rev 5.10.15.3 (2019/09/27) forceEnc追加 345 * 346 * @param flg URLEncodeを通す場合は、trueをセット 347 */ 348 public void setForceEnc( final String flg ) { 349 useForceEnc = nval( getRequestParameter( flg ), useForceEnc ); 350 } 351 352// /** 353// * 【廃止】フレームの左右余白サイズ(marginwidth)を指定します。 354// * HTML5では廃止されている属性のため、可能であればCSSを利用してください。 355// * 356// * @og.tag フレームの左右余白サイズを指定します。 357// * 358// * @og.rev 6.9.5.0 (2018/04/23) 値の設定を行いません。 359// * @og.rev 7.0.1.0 (2018/10/15) 廃止:物理削除 360// * 361// * @param marginwidth 左右余白サイズ 362// */ 363// public void setMarginwidth( final String marginwidth ) { 364//// set( "marginwidth",getRequestParameter( marginwidth ) ); 365// } 366 367// /** 368// * 【廃止】フレームの上下余白サイズ(marginheight)を指定します。 369// * HTML5では廃止されている属性のため、可能であればCSSを利用してください。 370// * 371// * @og.tag フレームの上下余白サイズを指定します。 372// * 373// * @og.rev 6.9.5.0 (2018/04/23) 値の設定を行いません。 374// * @og.rev 7.0.1.0 (2018/10/15) 廃止:物理削除 375// * 376// * @param marginheight 上下余白サイズ 377// */ 378// public void setMarginheight( final String marginheight ) { 379//// set( "marginheight",getRequestParameter( marginheight ) ); 380// } 381 382// /** 383// * 【廃止】フレームサイズを変更できないよう(noresize)に指定します。 384// * HTML5では廃止されている属性のため、可能であればCSSを利用してください。 385// * 386// * @og.tag 387// * フレームサイズを変更させない場合は、"noresize" を指定します。 388// * 処理自体は、空文字列以外であれば、内部的に"noresize" を設定します。 389// * 390// * @og.rev 6.9.5.0 (2018/04/23) 物理削除 391// * 392// * @param noresize フレームサイズ変更不可指定 393// */ 394// public void setNoresize( final String noresize ) { 395// final String ns = getRequestParameter( noresize ); 396// if( ns != null ) { set( "noresize", "noresize" ); } 397// } 398 399// /** 400// * 【廃止】スクロールバー(scrolling)の表示/非表示[auto/yes/no]を指定します(初期値:auto)。 401// * HTML5では廃止されている属性のため、可能であればCSSを利用してください。 402// * 403// * @og.tag 404// * auto:必要に応じてスクロールバーを表示(初期値) 405// * yes:常にスクロールバーを表示 406// * no:常にスクロールバーを表示しない 407// * 408// * @og.rev 6.9.5.0 (2018/04/23) 値の設定を行いません。 409// * @og.rev 7.0.1.0 (2018/10/15) 廃止:物理削除 410// * 411// * @param scrolling スクロールバーの表示方法指定 [auto:自動/yes:常時表示/no:非表示] 412// */ 413// public void setScrolling( final String scrolling ) { 414//// set( "scrolling",getRequestParameter( scrolling ) ); 415// } 416 417// /** 418// * 【廃止】フレームの境界線(frameborder)の[0:非表示/1:表示]を指定します(初期値:1)。 419// * HTML5では廃止されている属性のため、可能であればCSSを利用してください。 420// * 421// * @og.tag 422// * 0:枠を表示しない 423// * 1:枠を表示する。 424// * 初期値は、1:枠を表示する です。 425// * 426// * @og.rev 6.9.5.0 (2018/04/23) 物理削除 427// * 428// * @param frameborder フレームの境界線 [0:枠非表示/1:枠表示] 429// */ 430// public void setFrameborder( final String frameborder ) { 431// set( "frameborder",getRequestParameter( frameborder ) ); 432// } 433 434 /** 435 * 【TAG】ソース指定の画面を変更します。 436 * 437 * @og.tag 438 * src 指定がデフォルト設定で、changeGamen属性が設定されている 439 * 場合には、この値が優先されます。 440 * changeGamen は、画面IDのみ指定してください。src には、このID+"/index.jsp" が 441 * 追加されます。つまり、changeGamen="{@GAMENID}" という指定をしておけば、 442 * FavoriteLinkTag 等で引数に GAMENID が指定された場合のみ、この属性が有効になり、 443 * src="実画面ID/index.jsp" が指定されたことと同じ結果になります。 444 * 445 * changeHref が指定され場合には、src="実画面ID/JSPID.jsp" が指定されたことと同じ 446 * 結果になります。 447 * 448 * @og.rev 3.1.2.0 (2003/04/07) 画面IDと実画面ディレクトリとの関連見直し(DIRの代りにGAMENIDを推奨) 449 * @og.rev 4.2.1.1 (2008/04/30) 画面切り替えをするのは、アドレスが設定されいる場合に限る 450 * @param src 置換えソース 451 */ 452 public void setChangeGamen( final String src ) { 453 changeGmn = nval( getRequestParameter( src ),changeGmn ) ; // 7.4.2.0 (2021/05/14) MOD 454// final String sc = nval( getRequestParameter( src ),changeGmn ); 455// if( sc != null ) { 456// final GUIInfo guiInfo = getGUIInfo( sc ); 457// if( guiInfo != null && guiInfo.getAddress() != null && guiInfo.getAddress().length() > 0 ) { // 見つからない場合は、アクセス不可 458// changeGmn = guiInfo.getRealAddress( "index.jsp" ); 459// } 460// } 461 } 462 463 /** 464 * 【TAG】ソース指定の画面を変更します。 465 * 466 * @og.tag 467 * forwardしたいJSPファイル名を記述します。(例:result など) 468 * 初期値は "index.jsp" が設定されます。 469 * 実際には、各JSP画面(result.jsp )にリクエストが転送されます。 470 * 471 * changeGamenとchangeHref が指定され場合には、src="実画面ID/JSPID.jsp" が 472 * 指定されたことと同じ結果になります。 473 * 474 * @og.rev 7.4.2.0 (2021/05/14) frameタグでforwardしたいJSPファイルの指定ができるようにする 475 * @param href 置換えソース 476 */ 477 public void setChangeHref( final String href ) { 478 changeHref = nval( getRequestParameter( href ) ,changeHref ) ; 479 } 480 481 /** 482 * 【TAG】引数のキーを指定します。 483 * 484 * @og.tag 485 * URL の引数にセットするキーを CSV形式でセットします。 486 * 487 * @param key キー(CSV形式) 488 */ 489 public void setKeys( final String key ) { 490 keys = getRequestParameter( key ) ; 491 } 492 493 /** 494 * 【TAG】引数の値を指定します。 495 * 496 * @og.tag 497 * URL の引数にセットする値を CSV形式でセットします。 498 * 499 * @og.rev 7.4.3.0 (2021/06/11) URL の引数にセットする値を指定する 500 * 501 * @param val 値(CSV形式) 502 */ 503 public void setVals( final String val ) { 504 vals = getRequestParameter( val ); 505 } 506 507 /** 508 * 【TAG】前ページで選択したデータ列の情報を次のページに渡すかどうか[true:渡す/false:渡さない]を指定します(初期値:false)。 509 * 510 * @og.tag 511 * ただし、1行分のデータのみです。(複数選択時は、最初の1件目) 512 * trueを指定すると、データを渡します。falseの場合は、渡しません。 513 * 初期値は、false:渡さない です。 514 * 515 * @param db 選択データを渡すかどうか [true:渡す/false:渡さない] 516 */ 517 public void setDbTable( final String db ) { 518 dbTable = nval( getRequestParameter( db ),dbTable ); 519 } 520 521 /** 522 * 標準的な リクエスト情報かどうかを判断します。 523 * 524 * これは、引数のキーが、HybsSystem.ROW_SEL_KEY か、 525 * DBTableModel で送信されたキー( キー__番号)形式の場合は 526 * false を返します。 527 * 通常のリクエストキーとして扱いたくない場合の判定に使用します。 528 * 529 * @og.rev 3.4.0.3 (2003/09/10) 新規追加 530 * @og.rev 3.5.2.0 (2003/10/20) システムパラメータ の FRAME_UNDER_BAR_REQUEST_KEY_USED を使用。 531 * @og.rev 3.5.5.0 (2004/03/12) 名前と行番号の区切り記号("__")を、HybsSystem.JOINT_STRING に変更。 532 * @og.rev 6.8.1.1 (2017/07/22) 転送不要のキーを除外します。 533 * 534 * @param key 判定するキー 535 * 536 * @return 標準的な リクエスト情報かどうか [true:標準的/false:それ以外] 537 */ 538 private boolean isNormalRequestKey( final String key ) { 539 return key != null && 540 ! key.equals( HybsSystem.ROW_SEL_KEY ) && 541 ! key.startsWith( HybsSystem.NO_XFER_KEY ) && // 6.8.1.1 (2017/07/22) 542 ( key.indexOf( HybsSystem.JOINT_STRING ) < 0 || UNDER_BAR_KEY_USED ) ; 543 } 544 545 /** 546 * このオブジェクトの文字列表現を返します。 547 * 基本的にデバッグ目的に使用します。 548 * 549 * @return このクラスの文字列表現 550 * @og.rtnNotNull 551 */ 552 @Override 553 public String toString() { 554 return ToString.title( this.getClass().getName() ) 555 .println( "VERSION" ,VERSION ) 556 .println( "tableId" ,tableId ) 557 .println( "changeGmn" ,changeGmn ) 558 .println( "changeHref" ,changeHref ) 559 .println( "keys" ,keys ) 560 .println( "vals" ,vals ) // 7.4.3.0 (2021/06/11) 561 .println( "dbTable" ,dbTable ) 562 .println( "Other..." ,getAttributes().getAttribute() ) 563 .fixForm().toString() ; 564 } 565}