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 */ 016 package org.opengion.hayabusa.taglib; 017 018 import static org.opengion.fukurou.util.StringUtil.nval; 019 020 import java.io.File; 021 import java.util.ArrayList; 022 import java.util.Calendar; 023 import java.util.GregorianCalendar; 024 import java.util.HashMap; 025 import java.util.Map; 026 027 import javax.servlet.http.HttpServletRequest; 028 029 import org.opengion.fukurou.security.HybsCryptography; 030 import org.opengion.fukurou.util.StringUtil; 031 import org.opengion.fukurou.util.XHTMLTag; 032 import org.opengion.hayabusa.common.HybsSystem; 033 import org.opengion.hayabusa.common.HybsSystemException; 034 import org.opengion.hayabusa.html.CreateToken; 035 import org.opengion.hayabusa.html.ViewForm; 036 import org.opengion.hayabusa.resource.GUIInfo; 037 import org.opengion.hayabusa.resource.URLXfer; 038 039 /** 040 * HTML のaタグと同等?リンクを作?するHTML拡張タグです? 041 * 042 * @og.formSample 043 * ●形式?lt;og:link href="…" > ... </og:link > 044 * ●body?あ?EVAL_BODY_BUFFERED:BODYを評価し?{@XXXX} を解析しま? 045 * 046 * ●Tag定義?? 047 * <og:link 048 * type 【HTML】リンク先?MIMEタイプを?しま? 049 * name 【HTML】この要?リンクの対象とするための名前を指定しま?HTML5より?) 050 * gamenId 【TAG】画面ID属?を登録しま? 051 * useGamenId 【TAG】GAMENID,BACK_GAMENID 属?を付加するかど?[true/false]を設定しま?初期値:true) 052 * column 【TAG】リンクをつけた?ラ??しま?ViewLink タグと併用) 053 * keys 【TAG】リンク先に渡すキーをCSV形式で??しま? 054 * vals 【TAG】リンク先に渡す?をCSV形式で??しま? 055 * onLink 【TAG】リンクを張?true or 1)/張らな?false or 0)の設定を?しま?初期値:true) 056 * markList 【TAG】??る?ークを?"|"区?の??で?しま? 057 * href 【HTML】リンク先?URLを指定しま? 058 * target 【HTML】リンク先?表示ターゲ?を指定しま? 059 * caseKey 【TAG】このタグ自体を利用するかど?の条件キーを指定しま?初期値:null) 060 * caseVal 【TAG】このタグ自体を利用するかど?の条件値を指定しま?初期値:null) 061 * caseNN 【TAG】指定?値が?null/ゼロ?? でな???Not Null=NN)は、このタグは使用されま?初期値:true) 062 * caseNull 【TAG】指定?値が?null/ゼロ?? の場合?、このタグは使用されま?初期値:true) 063 * lbl 【TAG】ラベルリソースのラベルIDを指定しま? 064 * xlink 【TAG】href ではなく?xlink:href を使用するかど?[true/false]を指定しま?初期値:false) 065 * fileCheck 【TAG】ファイルの存在チェ?を行うかど?[true/false]を指定しま?初期値:false) 066 * filePath 【TAG】アドレスにファイルの?レクトリ直接のアドレスを指定するかど?[true/false]設定しま?初期値:false) 067 * hreflang 【HTML】リンク先?基本となる?コードを?しま? 068 * rel 【HTML】この?から見た、href属?で?されるリンク先との関係を?しま? 069 * rev 【HTML】href属?で?されるリンク先から見た、この?との関係をしてしま? 070 * charset 【HTML】リンク先??コードセ?を指定しま? 071 * shape 【HTML】リンクボタンの形状(イメージマッ?rect/circle/poly/default)を指定しま? 072 * coords 【HTML】リンクボタンの座標を?しま? 073 * id 【HTML】要?対して固有?名前(id)をつける場合に設定しま? 074 * lang 【HTML】要???と他?属?値の??lang,xml:lang)を指定しま? 075 * dir 【HTML】文字表記?方?dir)を指定しま? 076 * title 【HTML】要?対する補足?報(title)を設定しま? 077 * style 【HTML】この要?対して適用させるスタイルシー?style)を設定しま? 078 * tabindex 【HTML】タブ?移動?(tabindex)を指定しま?0 ??32767) 079 * accesskey 【HTML】アクセスキー(alt+キーで直接??を割り当てま? 080 * clazz 【HTML】要?対して class 属?を設定しま? 081 * language 【TAG】タグ?で使用する?コード[ja/en/zh/…]を指定しま? 082 * useDirectJump 【TAG】ダイレクトジャンプを使用するかど?[true/false]を指定しま?初期値:false) 083 * useRequestCache 【TAG】リクエストキャ?ュ??を使用するかど?[true/false]を指定しま?初期値:true) 084 * hrefOnly 【TAG】リンク(アンカータグ)ではなく?href 属?をそのまま返すかど?[true/false]を指定しま?初期値:false) 085 * hrefTarget 【TAG】リンク(アンカータグ)ではなく?href 属?と、target属??キーも含めて返すかど?[true/false]を指定しま?初期値:false) 086 * delKeys 【TAG】リクエストキャ?ュ??使用時に使用しな?削除する)キーをCSV形式で??しま? 087 * onClick 【HTML】JavaScriptのイベン?onClick を設定しま??onClick="renew('query.jsp','QUERY');") 088 * onBlur 【HTML】JavaScriptのイベン?onBlur を設定しま??onBlur="this.value=value.toUpperCase();") 089 * onFocus 【HTML】JavaScriptのイベン?onFocus を設定しま? 090 * ondblClick 【HTML】JavaScriptのイベン?ondblClick を設定しま? 091 * onMouseDown 【HTML】JavaScriptのイベン?onMouseDown を設定しま? 092 * onMouseUp 【HTML】JavaScriptのイベン?onMouseUp を設定しま? 093 * onMouseMove 【HTML】JavaScriptのイベン?onMouseMove を設定しま? 094 * onMouseOut 【HTML】JavaScriptのイベン?onMouseOut を設定しま? 095 * onMouseOver 【HTML】JavaScriptのイベン?onMouseOver を設定しま? 096 * roles 【TAG】ロールをセ?しま? 097 * useURLCheck 【TAG】リンクアドレスにURLチェ?用の確認キーを付加するかど?[true/false]を指定しま?初期値:false) 098 * urlCheckUser 【TAG】URLチェ?用の確認キーに対して、リンクを開くことのできるユーザーIDを指定しま?初期値:ログインユーザー) 099 * urlCheckTime 【TAG】URLチェ?用の確認キーに対して、リンクの有効期限を指定しま?初期値:60? 100 * urlCheckCrypt 【TAG】URLチェ?の暗号化キーを指定します?受け側に依存します?未??場合??ォルト?値が利用されます? 101 * extTocken 【TAG】利用するCreateTokenプラグイン名を設定しま? 102 * debug 【TAG】デバッグ??を?力するかど?[true/false]を指定しま?初期値:false) 103 * > ... Body ... 104 * </og:link> 105 * 106 * ●使用? 107 * ・普通?リンク 108 * <og:link gamenId="32ExcelIn" href="direct.jsp" keys="location,filename,modifyType" value="{@GUI.ADDRESS},{@GUI.ADDRESS}.xls,A" target="RESULT" > 109 * <img src="{@SYS.JSP}/image/insert.gif" alt="Excel Insert" /><og:message lbl="MSG0057" /> 110 * </og:link> 111 * 112 * ・検索結果??ブル?のリンク 113 * <og:viewLink command="{@command}"> 114 * <og:link column="KMZ" gamenId="RK0251" href="index.jsp" target="CONTENTS" 115 * keys="KMZ,ORDER_BY,command" vals="[KMZ],'LKIS',NEW" /> 116 * </og:viewLink> 117 * 118 * ・?レクトジャン???画面へ直接飛??URL 119 * gamenId を指定しなければこ?画面へのURLを作?します? 120 * こ?URLは、その画面の index.jsp に直接ジャンプするため?URLです? 121 * こ?場合?useRequestCache="true" が?期?なので、?なければ、false に設定願います? 122 * <og:link useDirectJump="true" delKeys="pageSize" 123 * keys="location,filename,modifyType" value="{@GUI.ADDRESS},{@GUI.ADDRESS}.xls,A" /> 124 * @og.group 画面表示 125 * 126 * @version 4.0 127 * @author Kazuhiko Hasegawa 128 * @since JDK5.0, 129 */ 130 public class LinkTag extends HTMLTagSupport { 131 //* こ?プログラ??VERSION??を設定します? {@value} */ 132 private static final String VERSION = "5.7.1.2 (2013/12/20)" ; 133 134 private static final long serialVersionUID = 571220131220L ; 135 136 private String column = null; 137 private String onLink = "true"; // true また? 1 138 private boolean fileCheck = false; 139 private boolean filePath = false; 140 private String baseURL = HybsSystem.sys( "FILE_URL" ); 141 private String fileURL = baseURL; 142 private String gamenId = null; 143 private boolean useGamenId = true; 144 // 3.5.2.0 (2003/10/20) 145 private String markList = "true|TRUE|1"; // true また? 1 146 private boolean xlink = false; // 3.5.5.0 (2004/03/12) 147 private boolean useDirectJump = false; // 3.7.1.0 (2005/04/26) 148 private boolean useRequestCache = true; // 3.7.1.0 (2005/04/26) 149 private int validDuration = -1; 150 private boolean hrefOnly = false; // 4.0.0 (2005/11/30) 151 private boolean hrefTarget = false; // 5.5.5.6 (2012/08/31) 152 153 private String[] keys = null; // 3.5.6.2 (2004/07/05) 154 private String[] vals = null; // 3.5.6.2 (2004/07/05) 155 private String[] delKeys = null; // 3.7.1.0 (2005/04/26) 156 private boolean useURLCheck = false; // 4.3.7.0 (2009/06/01) 157 private String urlCheckUser= null; // 4.3.7.0 (2009/06/01) 158 private long urlCheckTime= 1000*60*60*24;// 4.3.7.0 (2009/06/01) 159 private String urlCheckCrypt = null; // 5.8.8.0 (2015/06/05) 160 161 private String extToken = null; // 5.8.2.1 (2014/12/13) 162 private ArrayList<CreateToken> ctArray = null; 163 164 /** 165 * Taglibの開始タグが見つかったときに処??doStartTag() ?オーバ?ライドします? 166 * 167 * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応?ボディが存在する場合?みボディが呼ばれる対応? 168 * @og.rev 5.2.2.0 (2010/11/01) caseKey 、caseVal 属?対? 169 * @og.rev 5.7.1.2 (2013/12/20) msg ?msglbl 変更 170 * 171 * @return 後続????( EVAL_BODY_BUFFERED ) 172 */ 173 @Override 174 public int doStartTag() { 175 // 5.2.2.0 (2010/11/01) caseKey 、caseVal 属?対? 176 if( useTag() ) { 177 // String msg = getMsglbl(); 178 // if( msg == null && column != null ) { msg = "[" + column + "]"; } 179 // set( "body",msg ); 180 String msglbl = getMsglbl(); // 5.7.1.2 (2013/12/20) msg ?msglbl 変更 181 if( msglbl == null && column != null ) { msglbl = "[" + column + "]"; } 182 set( "body",msglbl ); 183 return( EVAL_BODY_BUFFERED ); // Body を評価する? extends BodyTagSupport ? 184 } 185 return ( SKIP_BODY ); // Body を評価しな? 186 } 187 188 /** 189 * Taglibのタグ本体を処??doAfterBody() ?オーバ?ライドします? 190 * 191 * @og.rev 3.1.1.0 (2003/03/28) ボディの?を取得する??、CommonTagSupport で行う? 192 * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応?ボディが存在する場合?みボディが呼ばれる対応? 193 * 194 * @return 後続????(SKIP_BODY) 195 */ 196 @Override 197 public int doAfterBody() { 198 String label = getBodyString(); 199 200 if( label != null && label.length() > 0 ) { 201 set( "body",label ); 202 } 203 204 return(SKIP_BODY); 205 } 206 207 /** 208 * Taglibの終?グが見つかったときに処??doEndTag() ?オーバ?ライドします? 209 * 210 * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応?release2() ?doEndTag()で呼ぶ? 211 * @og.rev 3.1.2.0 (2003/04/07) リンク?時に、画面IDを渡して、実アドレスを求める事ができる様にする? 212 * @og.rev 3.1.7.0 (2003/05/02) 戻る?タン用のBACK_GAMENID を?引数に追?ます? 213 * @og.rev 3.1.8.0 (2003/05/16) GAMENID属?の???への自動セ?を行うかど?を決める属?( useGamenId )を追?? 214 * @og.rev 3.1.8.0 (2003/05/16) 画面??が指定されたとき?リンク??作?方法を通常のリンク時にも適用する? 215 * @og.rev 3.1.8.0 (2003/05/16) 画面のロールに応じて、リンクを張?張らな?自動判断する? 216 * @og.rev 3.5.2.0 (2003/10/20) markList属?を追? 217 * @og.rev 3.5.5.0 (2004/03/12) xlink属?をAttributeオブジェクトに追? 218 * @og.rev 3.5.6.2 (2004/07/05) makeTag() の処??変更、viewlink へのパラメータ変更? 219 * @og.rev 3.7.1.0 (2005/04/26) ?レクトジャンプリンク機?を追? 220 * @og.rev 4.0.0.0 (2005/11/30) roles 属?の追? 221 * @og.rev 4.0.0.0 (2005/08/31) 同?ラ???登録を許可します? 222 * @og.rev 4.3.0.0 (2008/07/04) ロールモード?ルチ対? 223 * @og.rev 4.3.7.1 (2009/06/08) URLチェ?機?対? 224 * @og.rev 4.3.7.4 (2009/07/01) 循環参?を解? 225 * @og.rev 4.3.8.0 (2009/08/01) ユーザーIDの外部設定に対? 226 * @og.rev 5.2.2.0 (2010/11/01) caseKey 、caseVal 属?対? 227 * @og.rev 5.8.2.1 (2014/12/14) ト?クンプラグイン対? 228 * @og.rev 5.8.8.0 (2015/06/05) urlCheckCrypt対? 229 * 230 * @return 後続???? 231 */ 232 @Override 233 public int doEndTag() { 234 debugPrint(); // 4.0.0 (2005/02/28) 235 // 5.2.2.0 (2010/11/01) caseKey 、caseVal 属?対? 236 if( !useTag() ) { return(EVAL_PAGE); } 237 238 // 3.1.8.0 (2003/05/16) GAMENID属?の???への自動セ?を行うかど?を決める属?( useGamenId )を追?? 239 // 4.0.0 (2005/11/30) ??ロールが?アクセス許可の場合?、?力します? 240 String roles = get( "roles" ); 241 // if( roles != null && ! getUser().isAccess( roles ) ) { 242 // return(EVAL_PAGE); 243 // } 244 // 4.3.0.0 (2008/07/04) ロールモード?ルチ対? 245 if( ! getUser().isAccess( roles ) ) { 246 return(EVAL_PAGE); 247 } 248 249 // 4.3.7.1 (2009/06/08) 250 if( useURLCheck ) { 251 // 4.3.8.0 (2009/08/01) 252 // urlCheckUser = getUser().getUserID(); 253 urlCheckUser = nval( urlCheckUser, getUser().getUserID() ); 254 } 255 256 ViewLinkTag viewlink = (ViewLinkTag)findAncestorWithClass( this,ViewLinkTag.class ); 257 if( viewlink != null ) { 258 if( isGamenCheck() ) { set( "onLink", onLink ); } 259 else { set( "onLink", "false" ); } 260 // 4.3.7.1 (2009/06/08) 261 if( useURLCheck ) { 262 set( "useURLCheck", "true" ); 263 set( "urlCheckUser", urlCheckUser ); 264 set( "urlCheckTime", String.valueOf( System.currentTimeMillis() + urlCheckTime ) ); 265 set( "urlCheckCrypt", urlCheckCrypt); // 5.8.8.0 (2015/06/05) 266 } 267 set( "markList",markList ); 268 set( "linkFormat",makeTag() ); // 3.5.6.2 (2004/07/05) 269 // 4.0.0 (2005/08/31) 同?ラ???登録を許可します? 270 set( "column",column ); 271 set( "extToken", extToken); // 5.8.2.1 (2014/12/13) 272 viewlink.addAttribute( getAttributes() ); 273 } 274 // 3.7.1.0 (2005/04/26) ?レクトジャンプリンク機?を追? 275 // 画面の利用権限有無などは調査不? 276 else if( useDirectJump ) { 277 jspPrint( makeDirectLink() ); 278 } 279 else { 280 if( isFileCheck() && isGamenCheck() && markList.indexOf( onLink ) >= 0 ) { 281 // 3.5.6.2 (2004/07/05) makeTag() より移? 282 if( filePath ) { 283 String furl = get( "href" ); 284 285 fileURL = StringUtil.urlAppend( baseURL,furl ); 286 String filename = HybsSystem.url2dir( fileURL ); 287 288 set( "href",filename ); 289 } 290 291 // 4.3.7.1 (2009/06/08) 292 String tag = makeTag(); 293 if( useURLCheck ) { 294 // 5.8.8.0 (2015/06/05) urlCheckCrypt対? 295 HybsCryptography criptCls = null; 296 if( urlCheckCrypt != null && urlCheckCrypt.length() > 0 ){ 297 criptCls = new HybsCryptography( urlCheckCrypt ); 298 } 299 300 if( hrefOnly ) { 301 // 4.3.7.4 (2009/07/01) 循環参?を解? 302 // tag = XHTMLTag.addURLCheckKey( tag, HybsSystem.URL_CHECK_KEY, getUser().getUserID(), System.currentTimeMillis() + urlCheckTime ); 303 tag = XHTMLTag.addURLCheckKey( tag, HybsSystem.URL_CHECK_KEY, getUser().getUserID(), System.currentTimeMillis() + urlCheckTime, criptCls ); // 5.8.8.0 304 } 305 else { 306 // 4.3.7.4 (2009/07/01) 循環参?を解? 307 // tag = XHTMLTag.embedURLCheckKey( tag, HybsSystem.URL_CHECK_KEY, getUser().getUserID(), System.currentTimeMillis() + urlCheckTime ); 308 tag = XHTMLTag.embedURLCheckKey( tag, HybsSystem.URL_CHECK_KEY, getUser().getUserID(), System.currentTimeMillis() + urlCheckTime, criptCls );// 5.8.8.0 309 } 310 } 311 312 // 5.8.2.1 (2014/12/14) URLト?クンプラグイン 313 if( ctArray != null && ctArray.size() > 0 ){ 314 for( CreateToken ct : ctArray){ 315 if( hrefOnly ){ 316 tag = ct.generateURL( tag, System.currentTimeMillis() + urlCheckTime, null ); 317 } 318 else{ 319 tag = ct.embedToken( tag, System.currentTimeMillis() + urlCheckTime, null ); 320 } 321 } 322 } 323 324 jspPrint( tag ); 325 // jspPrint( makeTag() ); 326 } 327 } 328 329 return(EVAL_PAGE); 330 } 331 332 /** 333 * タグリブオブジェクトをリリースします? 334 * キャ?ュされて再利用される?で、フィールド?初期設定を行います? 335 * 336 * @og.rev 2.0.0.4 (2002/09/27) カスタ?グの release() メソ?を?追? 337 * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応?release2() ?doEndTag()で呼ぶ? 338 * @og.rev 3.1.2.0 (2003/04/07) リンク?時に、画面IDを渡して、実アドレスを求める事ができる様にする? 339 * @og.rev 3.1.8.0 (2003/05/16) GAMENID属?の???への自動セ?を行うかど?を決める属?( useGamenId )を追?? 340 * @og.rev 3.5.2.0 (2003/10/20) markList属?を追? 341 * @og.rev 3.5.5.0 (2004/03/12) xlink属?を追? 342 * @og.rev 3.5.6.2 (2004/07/05) keys , vals属?を追? 343 * @og.rev 3.7.1.0 (2005/04/26) useDirectJump , useRequestCache , delKeys 属?を追? 344 * @og.rev 4.0.0.0 (2005/09/30) validDuration 属?を追? 345 * @og.rev 4.3.7.0 (2009/06/01) useURLCheck属?を追? 346 * @og.rev 5.5.5.6 (2012/08/31) hrefTarget属?を追? 347 * @og.rev 5.8.2.1 (2014/12/14) ト?クンプラグイン対?extToken,ctArray属?を追? 348 * @og.rev 5.8.8.0 (2015/06/05) urlCheckCrypt追? 349 * 350 */ 351 @Override 352 protected void release2() { 353 super.release2(); 354 column = null; 355 onLink = "true"; // true また? 1 356 markList = "true|TRUE|1"; // 3.5.2.0 (2003/10/20) 357 fileCheck = false; 358 filePath = false; 359 baseURL = HybsSystem.sys( "FILE_URL" ); 360 fileURL = baseURL; 361 gamenId = null; 362 useGamenId = true; 363 xlink = false; // 3.5.5.0 (2004/03/12) 364 keys = null; // 3.5.6.2 (2004/07/05) 365 vals = null; // 3.5.6.2 (2004/07/05) 366 useDirectJump = false; // 3.7.1.0 (2005/04/26) 367 useRequestCache = true; // 3.7.1.0 (2005/04/26) 368 delKeys = null; // 3.7.1.0 (2005/04/26) 369 validDuration = -1; 370 hrefOnly = false; // 4.0.0 (2005/11/30) 371 hrefTarget = false; // 5.5.5.6 (2012/08/31) 372 useURLCheck = false; // 4.3.7.0 (2009/06/01) 373 urlCheckUser = null; // 4.3.7.0 (2009/06/01) 374 urlCheckTime = 1000*60*60*24; // 4.3.7.0 (2009/06/01) 375 extToken = null; // 5.8.2.1 (2014/12/14) 376 ctArray = null; // 5.8.2.1 (2014/12/14) 377 urlCheckCrypt = null; // 5.8.8.0 (2015/06/05) 378 } 379 380 /** 381 * リンクを作?します? 382 * 383 * @og.rev 3.5.5.0 (2004/03/12) xlink 属?に応じたリンク?を作?します? 384 * @og.rev 3.5.6.2 (2004/07/05) XHTMLTag の変換値のみを返す様に変更? 385 * @og.rev 3.7.0.3 (2005/03/01) リンク作?時に行番号を引数に追?る? 386 * @og.rev 4.0.0.0 (2005/11/30) href 属?のみを返します? 387 * @og.rev 4.0.1.0 (2007/12/17) BACK_ADDRESSの追? 388 * @og.rev 4.3.3.5 (2008/11/08) サーバ?アドレスを取得する際に、リクエストから取得するよ?変更します? 389 * @og.rev 4.3.7.0 (2009/06/01) URLチェ?機?対? 390 * @og.rev 4.3.7.1 (2009/06/08) ↑?実?#doEndTagに移? 391 * @og.rev 5.5.5.6 (2012/08/31) 「href="*******" target="******"?と? キー付きの??を作? 392 * 393 * @return リンクタグ?? 394 */ 395 @Override 396 protected String makeTag() { 397 398 makeGamenLink(); // 3.5.6.2 (2004/07/05) 399 if( get( "body" ) == null ) { set( "body" , get( "href" ) ); } 400 401 // xlink と通常の link では、URL接続文字が異なる? 402 String sep = ( xlink ) ? "&" : "&" ; 403 404 String urlEnc = XHTMLTag.urlEncode( keys,vals,sep ); 405 // 3.5.6.2 (2004/07/05) addBackGamenId() メソ?の?を移? 406 if( useGamenId ) { 407 String backGamenId = getGUIInfoAttri( "KEY" ); // 4.0.0 (2005/01/31) 408 urlEnc += sep + "BACK_ROW={I}" + sep + "BACK_GAMENID=" + backGamenId ; // 3.7.0.3 (2005/03/01) 409 if( gamenId != null && gamenId.length() > 0 ) { 410 urlEnc += sep + "GAMENID=" + gamenId ; 411 } 412 // 4.0.1.0 (2007/12/17) gamenIdがある?合?backAddressを付加する?BackGamenTagではこれで戻? 413 String guiAddress = getGUIInfoAttri( "ADDRESS" ); 414 415 // 4.3.3.5 (2008/11/08) サーバ?アドレスを取得する際に、リクエストから取得するよ?変更します? 416 // String backAddress = sys("CONTEXT_URL") + "jsp/"+guiAddress+"/index.jsp"; 417 String backAddress = getContextURL() + guiAddress + "/index.jsp"; 418 urlEnc += sep + "BACK_ADDRESS=" + backAddress; 419 } 420 421 // 4.0.0 (2005/11/30) href 属?のみを返します? 422 if( hrefOnly ) { 423 return XHTMLTag.addUrlEncode( get( "href" ),urlEnc,sep ); 424 } 425 426 // 5.5.5.6 (2012/08/31) 「href="*******" target="******"?と? キー付きの??を作? 427 if( hrefTarget ) { 428 StringBuilder hrefTemp = new StringBuilder( HybsSystem.BUFFER_MIDDLE ); 429 430 hrefTemp.append( "href=\"" ).append( XHTMLTag.addUrlEncode( get( "href" ),urlEnc,sep ) ).append( "\"" ); 431 432 String target = get( "target" ) ; 433 if( target != null && !target.isEmpty() ) { 434 hrefTemp.append( " target=\"" ).append( target ).append( "\"" ); 435 } 436 437 return hrefTemp.toString() ; 438 } 439 440 if( xlink ) { 441 return XHTMLTag.xlink( getAttributes(),urlEnc ) ; 442 } 443 else { 444 return XHTMLTag.link( getAttributes(),urlEnc ) ; 445 } 446 } 447 448 /** 449 * ?レクトジャンプリンクを作?します? 450 * 451 * gamenId を指定しなければ、この画面が指定されたと?ます? 452 * target を指定しなければ?_blank" を指定します? 453 * msg がなければ(また?、BODY部が空の場?、画面名にこ?リンクを作?します? 454 * 455 * @og.rev 3.7.1.0 (2005/04/26) 新規追? 456 * @og.rev 4.0.0.0 (2005/09/30) リンク??をハ?ュ化します? 457 * @og.rev 4.3.3.5 (2008/11/08) サーバ?アドレスを取得する際に、リクエストから取得するよ?変更します? 458 * 459 * @return ?レクトジャンプリンク?? 460 */ 461 private String makeDirectLink() { 462 463 // gamenId を指定しなければ、この画面が指定されたと?ます? 464 if( gamenId == null ) { 465 gamenId = getGUIInfoAttri( "KEY" ); 466 } 467 468 // キャ?ュ??と keys,vals??を設定します? 469 if( useRequestCache ) { makeRequestCache2Vals( gamenId ); } 470 String urlEnc = XHTMLTag.urlEncode( keys,vals ); 471 urlEnc = urlEnc + "&GAMENID=" + gamenId ; 472 473 String href = get( "href" ); 474 if( href == null || href.length() == 0 ) { 475 // 4.3.3.5 (2008/11/08) サーバ?アドレスを取得する際に、リクエストから取得するよ?変更します? 476 // href = sys( "CONTEXT_URL" ) + "jsp/index.jsp" ; 477 href = getContextURL() + "index.jsp" ; 478 } 479 480 String redirectURL = href + "?" + urlEnc ; 481 String name = getGUIInfoAttri( "LNAME" ); 482 483 String validDate = null; // 設定されな??合?、無制? 484 if( validDuration != 0 ) { 485 if( validDuration < 0 ) { // マイナスの場合?、?期?が使われます? 486 validDuration = sysInt( "LINK_VALID_DURATION_DAYS" ); 487 } 488 // ミリ? ? 時間 489 long nowTime = System.currentTimeMillis() + 1000L * 3600L * 24L * validDuration ; 490 validDate = HybsSystem.getDate( nowTime,"yyyyMMdd" ); 491 } 492 String userid = getUser().getUserID(); 493 494 URLXfer xfer = new URLXfer(); 495 // redirectURL,name,validDate,userid 496 return xfer.getRandomURL( redirectURL,name,validDate,userid ); 497 } 498 499 /** 500 * リクエストキャ?ュ??を加味した keys,vals を?作?します? 501 * こ?メソ?は、ダイレクトジャンプ時のみ有効です? 502 * 503 * リクエスト情報のMapを取り?します?そ?とき?keys,vals を優先して 504 * 設定します? 505 * 506 * @og.rev 3.7.1.0 (2005/04/26) 新規追? 507 * 508 * @param gamenId 画面ID(リクエストキャ?ュの取り出しキー) 509 */ 510 @SuppressWarnings(value={"unchecked"}) 511 private void makeRequestCache2Vals( final String gamenId ) { 512 Map<String,String[]> cache = new HashMap<String,String[]>(); 513 514 String cacheKey = HybsSystem.REQ_CACHE_KEY + gamenId ; 515 Map<String,String[]> map = (Map<String,String[]>)getSessionAttribute( cacheKey ); 516 if( map != null ) { cache.putAll( map ); } 517 518 if( keys != null ) { 519 for( int i=0; i<keys.length; i++ ) { 520 // keys,vals をキャ?ュに上書? キャ?ュは、文字?配?) 521 String[] temp = new String[] { vals[i] } ; 522 cache.put( keys[i],temp ); 523 } 524 } 525 526 // ?レクトジャンプするため?画面IDは、別途設定するため?削除しておきます? 527 cache.remove( "GAMENID" ); 528 529 // 使用しな?ーを?削除しておきます? 530 if( delKeys != null ) { 531 for( int i=0; i<delKeys.length; i++ ) { 532 cache.remove( delKeys[i] ); 533 } 534 } 535 536 // マップキーを取得?キャ?ュ値は、String[] なので、?キー登録する? 537 String[] cKeys = cache.keySet().toArray( new String[cache.size()] ); 538 539 ArrayList<String> v_keys = new ArrayList<String>(); 540 ArrayList<String> v_vals = new ArrayList<String>(); 541 for( int i=0; i<cKeys.length; i++ ) { 542 String kk = cKeys[i]; 543 String[] vv = cache.get( kk ); 544 if( vv != null ) { 545 for( int j=0; j<vv.length; j++ ) { 546 v_keys.add( kk ); 547 v_vals.add( vv[j] ); 548 } 549 } 550 } 551 552 keys = v_keys.toArray( new String[v_keys.size()] ); 553 vals = v_vals.toArray( new String[v_vals.size()] ); 554 } 555 556 /** 557 * ファイルの存在チェ?を行います? 558 * 559 * 実ファイルは、URL(httpの引数)より、変換して求めます? 560 * 561 * @og.rev 3.1.8.0 (2003/05/16) 画面のロールに応じて、リンクを張?張らな?自動判断する? 562 * 563 * @return ファイルが存在する(true)/存在しな?false) 564 */ 565 private boolean isFileCheck() { 566 boolean rtn = true; 567 568 if( fileCheck ) { 569 File file = null; 570 571 String url = get( "href" ); 572 if( url != null ) { 573 String fin = HybsSystem.url2dir( url ); 574 file = new File( fin ); 575 } 576 rtn = ( file != null && file.exists() ); 577 } 578 579 return rtn ; 580 } 581 582 /** 583 * リンク先?画面のロールに応じて、リンクを張?張らな?自動判断を行います? 584 * 585 * リンク先?画面??は、gamenId 属?で?してください。それ以外?リンクは? 586 * 自動判断できません? 587 * link タグ単独の場合に、画面にアクセスできな??合?、メ?ージも表示されません? 588 * viewLink タグを利用される?合?、リンクのON/OFF で制御します? 589 * 590 * @og.rev 3.1.8.0 (2003/05/16) 画面のロールに応じて、リンクを張?張らな?自動判断する? 591 * @og.rev 4.0.0.0 (2005/01/31) GUIオブジェクトがマップに無ければ、アクセスできな?? 592 * 593 * @return 画面アクセス許可する(true)/許可しな?false) 594 */ 595 private boolean isGamenCheck() { 596 boolean rtn = true; 597 598 if( gamenId != null ) { 599 GUIInfo guiInfo = getGUIInfo( gamenId ); // 4.0.0 (2005/01/31) 600 601 // 4.0.0 (2005/01/31) ユーザー毎にアクセスできるGUIが設定されて?為 602 // 存在しなければ、アクセス不可と?こと? 603 if( guiInfo == null ) { rtn = false; } 604 } 605 606 return rtn ; 607 } 608 609 /** 610 * 画面??とhref から、指定????を作?します? 611 * 612 * @og.rev 3.1.2.0 (2003/04/07) リンク?時に、画面IDを渡して、実アドレスを求める事ができる様にする? 613 * @og.rev 3.1.8.0 (2003/05/16) リンク作?時に、kyes/values ?null の時?処??修正? 614 * @og.rev 3.1.8.0 (2003/05/16) GAMENID属?の???への自動セ?を行うかど?を決める属?( useGamenId )を追?? 615 * @og.rev 3.1.8.0 (2003/05/16) 画面??が指定されたとき?リンク??作?方法を通常のリンク時にも適用する? 616 * @og.rev 3.5.5.0 (2004/03/12) URLを求める?に、GUIInfo#getRealAddress() を使用する? 617 * @og.rev 4.0.0.0 (2005/01/31) GUIInfoの実アドレスのパラメータを?慮する? 618 * 619 */ 620 private void makeGamenLink() { 621 if( gamenId == null || gamenId.length() == 0 ) { return ; } // 4.0.0 (2005/11/30) 622 623 GUIInfo guiInfo = getGUIInfo( gamenId ); // 4.0.0 (2005/01/31) 624 if( guiInfo == null ) { return ; } // 見つからな??合?、アクセス不可 625 626 String address = guiInfo.getRealAddress( get( "href" ) ); 627 String url = getRequestParameter( address ); 628 set( "href",url ); 629 630 String label = guiInfo.getLabel(); 631 if( get( "title" ) == null ) { 632 set( "title","To:" + label ); 633 } 634 if( get( "body" ) == null ) { 635 set( "body",label ); 636 } 637 } 638 639 /** 640 * リクエストからサーバ?アドレス(例:http://hn5120:8824/ver4/jsp/)を取得します? 641 * 642 * @og.rev 4.3.3.5 (2008/11/08) 新規追?? 643 * @og.rev 5.4.3.8 (2011/01/24) プロトコルhttps対? 644 * 645 * @return サーバ?アドレス?? 646 */ 647 private String getContextURL() { 648 StringBuilder link = new StringBuilder( HybsSystem.BUFFER_MIDDLE ); 649 HttpServletRequest request = (HttpServletRequest) getRequest(); 650 //link.append( "http://" ); 651 link.append( request.getScheme() ).append( "://" ); // 5.4.3.8 652 link.append( request.getServerName() ).append( ":" ); 653 link.append( request.getServerPort() ); 654 link.append( request.getContextPath() ); 655 link.append( "/jsp/" ); 656 return link.toString(); 657 } 658 659 /** 660 * 【HTML】リンク先?MIMEタイプを?します? 661 * 662 * @og.tag リンク先?MIMEタイプを?します? 663 * 664 * @param type MIMEタイ? 665 */ 666 public void setType( final String type ) { 667 set( "type",getRequestParameter( type ) ); 668 } 669 670 /** 671 * 【HTML】この要?リンクの対象とするための名前を指定します? 672 * 673 * @og.tag こ?要?リンクの対象とするための名前を指定します? 674 * 675 * ※ HTML5では、a要??name属?は?されて?す? 676 * HTML4.01におけるname属?は、ウェブ?ージ??特定??名前を付けて? 677 * ペ?ジ?ンクを作?する際などに使用して?した?HTML5で同様? 678 * 機?を作?する場合にはid属?を使用します? id属?は、?とつの 679 * ?の中では重?て同じ名前を付けることはできな??で? 680 * ウェブ?ージ??場??に特定できます? 681 * 682 * @param name 名前 683 * @see <a href="http://www.htmq.com/html5/a.shtml">a</a> 684 */ 685 public void setName( final String name ) { 686 set( "name",getRequestParameter( name ) ); 687 } 688 689 /** 690 * 【TAG】リンクをつけた?ラ??しま?ViewLink タグと併用)? 691 * 692 * @og.tag 693 * こ?カラ?のTableModelに対して?ViewLink タグが存在する場合?, 694 * リンクを張ります? 695 * 696 * @param clm カラ? 697 */ 698 public void setColumn( final String clm ) { 699 this.column = getRequestParameter( clm ); 700 } 701 702 /** 703 * 【HTML】リンク先?URLを指定します? 704 * 705 * @og.tag リンク先?URLを指定します? 706 * 707 * @param href リンク先?URL 708 */ 709 public void setHref( final String href ) { 710 set( "href",getRequestParameter( href ) ); 711 } 712 713 /** 714 * 【HTML】リンク先?基本となる?コードを?します? 715 * 716 * @og.tag リンク先?基本となる?コードを?します? 717 * 718 * @param hreflang ?コー? 719 */ 720 public void setHreflang( final String hreflang ) { 721 set( "hreflang",getRequestParameter( hreflang ) ); 722 } 723 724 /** 725 * 【HTML】この?から見た、href属?で?されるリンク先との関係を?します? 726 * 727 * @og.tag こ??から見た、href属?で?されるリンク先との関係を?します? 728 * 729 * @param rel リンク先との関? 730 */ 731 public void setRel( final String rel ) { 732 set( "rel",getRequestParameter( rel ) ); 733 } 734 735 /** 736 * 【HTML】href属?で?されるリンク先から見た、この?との関係をしてします? 737 * 738 * @og.tag href属?で?されるリンク先から見た、この?との関係をしてします? 739 * 740 * @param rev リンク先から見たこ??との関? 741 */ 742 public void setRev( final String rev ) { 743 set( "rev",getRequestParameter( rev ) ); 744 } 745 746 /** 747 * 【HTML】リンク先??コードセ?を指定します? 748 * 749 * @og.tag リンク先??コードセ?を指定します? 750 * 751 * @param charset ?コードセ? 752 */ 753 public void setCharset( final String charset ) { 754 set( "charset",getRequestParameter( charset ) ); 755 } 756 757 /** 758 * 【HTML】リンク先?表示ターゲ?を指定します? 759 * 760 * @og.tag リンク先??を表示させるフレー??また?ウィンドウの名前を指定します? 761 * 762 * @param target ターゲ? 763 */ 764 public void setTarget( final String target ) { 765 set( "target",getRequestParameter( target ) ); 766 } 767 768 /** 769 * 【HTML】リンクボタンの形状(イメージマッ?rect/circle/poly/default)を指定します? 770 * 771 * @og.tag リンクボタンの形状(イメージマッ?rect/circle/poly/default)を指定します? 772 * 773 * @param shape 形状(イメージマッ?rect/circle/poly/default) 774 */ 775 public void setShape( final String shape ) { 776 set( "shape",getRequestParameter( shape ) ); 777 } 778 779 /** 780 * 【HTML】リンクボタンの座標を?します? 781 * 782 * @og.tag 783 * coords セ? 784 * 785 * @param coords リンクボタンの座? 786 */ 787 public void setCoords( final String coords ) { 788 set( "coords",getRequestParameter( coords ) ); 789 } 790 791 /** 792 * 【TAG】リンク先に渡すキーをCSV形式で??します? 793 * 794 * @og.tag リンク先に渡すキーを指定します? 795 * ?方法?、CSV変数を?に?してから、getRequestParameter で値を取得します? 796 * こうしな???タ自身にカンマを持って?場合に?をミスる為です? 797 * 798 * @og.rev 3.5.6.2 (2004/07/05) CommonTagSupport#getCSVParameter を使用 799 * 800 * @param key キー(CSV形? 801 */ 802 public void setKeys( final String key ) { 803 keys = getCSVParameter( key ); 804 } 805 806 // /** 807 // * 【?】リンク先に渡す?をCSV形式で??します? 808 // * 809 // * @og.tag リンク先に渡す?を指定します? 810 // * 811 // * @og.rev 3.5.6.2 (2004/07/05) ?します? 812 // * @og.rev 4.0.0.0 (2007/06/18) ? 813 // * 814 // * @param value 値(CSV形? 815 // * @deprecated vals 属?を使用してください? 816 // */ 817 // @Deprecated public void setValue( final String value ) { 818 // setVals( value ); 819 // } 820 821 /** 822 * 【TAG】リンク先に渡す?をCSV形式で??します? 823 * 824 * @og.tag リンク先に渡す?を指定します? 825 * ?方法?、CSV変数を?に?してから、getRequestParameter で値を取得します? 826 * こうしな???タ自身にカンマを持って?場合に?をミスる為です? 827 * 828 * @og.rev 3.5.6.2 (2004/07/05) CommonTagSupport#getCSVParameter を使用 829 * 830 * @param val 値(CSV形? 831 */ 832 public void setVals( final String val ) { 833 vals = getCSVParameter( val ); 834 } 835 836 /** 837 * 【TAG】リンクを張?true or 1)/張らな?false or 0)の設定を?しま?初期値:true)? 838 * 839 * @og.tag 840 * リンクを張る?合??true"(また? "1") リンクを張らな? 841 * 場合?, "true以?(また? "0")をセ?します? 842 * 初期値は?"true"(リンクを張?です? 843 * さらに、[カラ?] で、動?カラ??値で、リンクを張る?張らな? 844 * 選ぶ事が可能になります?値は?true"(また? "1") で、?ークします? 845 * 追?3.5.2.0 (2003/10/20)?markList属?に、??象??郡を指定できます? 846 * これにより、リンクを??るかど?の判断が?true,1 以外にも使用できるようになりました? 847 * 848 * @og.rev 3.5.2.0 (2003/10/20) markList属?を追? 849 * 850 * @param flag リンクの設定[true,1:リンクを張?true,1以?リンクを張らない] 851 */ 852 public void setOnLink( final String flag ) { 853 onLink = nval( getRequestParameter( flag ),onLink ); 854 } 855 856 /** 857 * 【TAG】ファイルの存在チェ?を行うかど?[true/false]を指定しま?初期値:false)? 858 * 859 * @og.tag 860 * "true"の場合?、ファイルの存在チェ?を行い、ファイルがあれ? 861 * リンクを張ります?ファイルが存在しな??合?, 何も表示されません? 862 * 初期値は?"false"(ファイルチェ?を行わな?です? 863 * 注意:現状、viewLink タグからの使用は出来ませんので、ご?願います? 864 * 865 * @param flag 存在チェ?[true:行う/false:行わない]) 866 */ 867 public void setFileCheck( final String flag ) { 868 fileCheck = nval( getRequestParameter( flag ),fileCheck ); 869 } 870 871 /** 872 * 【TAG】アドレスにファイルの?レクトリ直接のアドレスを指定するかど?[true/false]設定しま?初期値:false)? 873 * 874 * @og.tag 875 * "true"の場合?、ファイルの物?ィレクトリをリンクします? 876 * 初期値は?"false"(ファイルの直接アドレスを行わな?です? 877 * 878 * @param flag ファイルの?レクトリ直接のアドレスの?[true:直接アドレス/そ??通常のURL] 879 */ 880 public void setFilePath( final String flag ) { 881 filePath = nval( getRequestParameter( flag ),filePath ); 882 } 883 884 /** 885 * 【TAG】画面ID属?を登録します? 886 * 887 * @og.tag 888 * gamenId 属?は、画面IDをキーに、実アドレスを求める?に使用します? 889 * 画面IDが指定された場合?、実アドレスに変換する。指定されな??合?? 890 * href 属?をそのままリンク??を作?します? 891 * 画面IDを指定する?合? href は、JSPファイル?例えば、index.jsp ?です? 892 * 893 * @og.rev 3.1.2.0 (2003/04/07) リンク?時に、画面IDを渡して、実アドレスを求める事ができる様にする? 894 * 895 * @param id 画面ID属? 896 */ 897 public void setGamenId( final String id ) { 898 gamenId = nval( getRequestParameter( id ),gamenId ); 899 } 900 901 /** 902 * 【TAG】GAMENID,BACK_GAMENID 属?を付加するかど?[true/false]を設定しま?初期値:true)? 903 * 904 * @og.tag 905 * "true"の場合?、GAMENID,BACK_GAMENID 属??href に追?ます?(?KEY1=VAL1&KEY2=VAL2???) 906 * "false"の場合?、付加しません? 907 * JavaScript ??通常のファイル( .html ?.pdf ?に、GAMENID,BACK_GAMENID 属?を付けな?? 908 * する事が出来ます? 909 * 初期値は?"true"(GAMENID,BACK_GAMENID 属??href に追??です? 910 * 911 * @og.rev 3.1.8.0 (2003/05/16) GAMENID属?の???への自動セ?を行うかど?を決める属?( useGamenId )を追?? 912 * 913 * @param flag BACK_GAMENID 属?を付加するかど?[true:追??そ??追?ない] 914 */ 915 public void setUseGamenId( final String flag ) { 916 useGamenId = nval( getRequestParameter( flag ),useGamenId ); 917 } 918 919 /** 920 * 【TAG】??る?ークを?"|"区?の??で?します? 921 * 922 * @og.tag 923 * markListで与えられた文字?に、onLink??(大??小文字?区別あり)? 924 * 含まれて?ば、??ます? 925 * 例えば?A","B","C" と???が?onLink で?された 926 * 場合に処?るよ?した??合??A|B|C" をセ?します? 927 * markList には、[カラ?]?が可能です? 928 * 初期値は?"true|TRUE|1"です? 929 * 930 * @og.rev 3.5.2.0 (2003/10/20) 新規追? 931 * 932 * @param list 処?る?ーク(indexOf による含?含まな?? 933 */ 934 public void setMarkList( final String list ) { 935 markList = nval( getRequestParameter( list ),markList ); 936 } 937 938 /** 939 * 【TAG】href ではなく?xlink:href を使用するかど?[true/false]を指定しま?初期値:false)? 940 * 941 * @og.tag 942 * xlink:href 属?は、XMLでのリンクを指定します?そ?場合?href 属?で?し? 943 * ?は、xlink:href に置き換えられます? 944 * また?URL??の接続文字?(&)を?(&amp;)で接続します?これは、xlink として? 945 * XMLファイルに埋め込??合に、置き換えが?な為です? 946 * 初期値は?"false"(通常の href) です? 947 * 948 * @og.rev 3.5.5.0 (2004/03/12) 新規追? 949 * 950 * @param lnk XMLリンクを使用するかど?[true:使用する/false:使用しない] 951 */ 952 public void setXlink( final String lnk ) { 953 xlink = nval( getRequestParameter( lnk ),xlink ); 954 } 955 956 /** 957 * 【TAG】ダイレクトジャンプを使用するかど?[true/false]を指定しま?初期値:false)? 958 * 959 * @og.tag 960 * ?レクトジャン???画面へ直接飛??は、簡易ワークフロー?、画面への 961 * リンクを作?する場合に使用します??には、メール本?記述して、指定?画面まで 962 * 直接飛?す?合に使用します? 963 * こ?リンクは、その画面の index.jsp に直接ジャンプします? 964 * 965 * gamenId を指定しなければ、この画面が指定されたと?ます? 966 * target を指定しなければ?_blank" を指定します? 967 * msg がなければ(また?、BODY部が空の場?、画面名にこ?リンクを作?します? 968 * 初期値は?"false"(使用しな? です? 969 * 970 * @og.rev 3.7.1.0 (2005/04/26) 新規追? 971 * 972 * @param directJump ?レクトジャンプを使用するかど?[true:使用する/false:使用しない] 973 */ 974 public void setUseDirectJump( final String directJump ) { 975 useDirectJump = nval( getRequestParameter( directJump ),useDirectJump ); 976 } 977 978 /** 979 * 【TAG】リクエストキャ?ュ??を使用するかど?[true/false]を指定しま?初期値:true)? 980 * 981 * @og.tag 982 * リクエストキャ?ュ??は、戻るリンクで画面を差表示(command=RENEW)する場合に 983 * ?に検索に利用された情報をキャ?ュしておき、?利用する場合に利用する値です? 984 * ?レクトジャンプ機?(useDirectJum=true)の場合?み有効です? 985 * 戻るリンクによる再表示は、各画面自身が持って???を利用しますが? 986 * ?レクトジャンプ等で、すでにキャ?ュが存在して??セ?ョンが異なって?) 987 * 場合に、リンク??に直接紐付けて、?検索させる?がある場合に利用します? 988 * こ?キャ?ュは、keys,vals による値の再設定で、書き換えることが可能です? 989 * 990 * 初期値は?"true"(使用する) です? 991 * 992 * @og.rev 3.7.1.0 (2005/04/26) 新規追? 993 * 994 * @param useCache リクエストキャ?ュ??を使用するかど?[true:使用する/false:使用しない] 995 */ 996 public void setUseRequestCache( final String useCache ) { 997 useRequestCache = nval( getRequestParameter( useCache ),useRequestCache ); 998 } 999 1000 /** 1001 * 【TAG】リクエストキャ?ュ??使用時に使用しな?削除する)キーをCSV形式で??します? 1002 * 1003 * @og.tag 1004 * リクエストキャ?ュ??には、?に検索時に使用されたすべての引数? 1005 * 使用されます?こ?引数を?転送?画面では、使用しな?ースがあり?そ?場合に? 1006 * ??キー??を?削除します? 1007 * ?方法?、CSV変数を?に?してから、getRequestParameter で値を取得します? 1008 * こうしな???タ自身にカンマを持って?場合に?をミスる為です? 1009 * 1010 * @og.rev 3.7.1.0 (2005/04/26) 新規追? 1011 * 1012 * @param key 使用しな?削除する)キーをCSV形式で??? 1013 */ 1014 public void setDelKeys( final String key ) { 1015 delKeys = getCSVParameter( key ); 1016 } 1017 1018 /** 1019 * 【TAG】ダイレクトジャンプリンク時?ハッシュ化されたURLの有効期間を日数を指定しま? 1020 * (初期値:LINK_VALID_DURATION_DAYS[={@og.value org.opengion.hayabusa.common.SystemData#LINK_VALID_DURATION_DAYS}])? 1021 * 1022 * @og.tag 1023 * ?レクトジャンプリンクの引数を作?する場合?有効期限を指定できます? 1024 * ここでは、設定時刻からの有効期間を日数?します? 1025 * 実際には、GE17のvalidDateカラ?設定される、日付と現在日を比?て? 1026 * 有効かど?を判断します? 1027 * ゼロが指定された場合?、制限なしに設定されます?マイナスの場合?、?期?が使われます? 1028 * (初期値:ユーザー定数のLINK_VALID_DURATION_DAYS[={@og.value org.opengion.hayabusa.common.SystemData#LINK_VALID_DURATION_DAYS}])? 1029 * 1030 * @og.rev 4.0.0.0 (2005/09/30) 新規追? 1031 * 1032 * @param validDura URLの有効期間日数 1033 * @see org.opengion.hayabusa.common.SystemData#LINK_VALID_DURATION_DAYS 1034 */ 1035 public void setValidDuration( final String validDura ) { 1036 validDuration = nval( getRequestParameter( validDura ),validDuration ); 1037 } 1038 1039 /** 1040 * 【TAG】リンク(アンカータグ)ではなく?href 属?をそのまま返すかど?[true/false]を指定しま?初期値:false)? 1041 * 1042 * @og.tag 1043 * 通常のリンクは、アンカータグ(aタグ)の状態で出力されます?そ?場合?HTML上では 1044 * リンクとして表示されます?こ?フラグをtrue にセ?すると、リンク?? 1045 * そ?も?が?力されます?これは、リンク??を作?してDBに登録する場合などに 1046 * 使用します? 1047 * 1048 * 初期値は?"false"(リンク) です? 1049 * 1050 * @og.rev 4.0.0.0 (2005/11/30) 新規追? 1051 * 1052 * @param flag href 属?をそのまま返すかど?(true:href属?/false:リンク) 1053 */ 1054 public void setHrefOnly( final String flag ) { 1055 hrefOnly = nval( getRequestParameter( flag ),hrefOnly ); 1056 } 1057 1058 /** 1059 * 【TAG】リンク(アンカータグ)ではなく?href 属?と、target属??キーも含めて返すかど?[true/false]を指定しま?初期値:false)? 1060 * 1061 * @og.tag 1062 * ??は、hrefOnly と類似の機?で、アンカータグ(aタグ)の出力ではなく?href 属?と? 1063 * target属??キーも含めて作?します? 1064 * 「href="*******" target="******"?と?形式になります? 1065 * これは、クリ?ブルマップ等? href 属?と target属?の両方を使用するようなケースで使?す? 1066 * また?onLink、markList を使ったリンク作?可否の処?おこなった?合?通常であれば? 1067 * ??カラ??値が取得できますが、その場合?、?頭??が?href かど?を判定することで? 1068 * リンク作?可否の判断が可能です? 1069 * ??ば、この属??true にセ?した場合?、?頭??が?href で始まることが保障されます? 1070 * hrefOnly = true と同時に設定した?合?、hrefOnly が優先されます? 1071 * 1072 * 初期値は?"false"(リンク) です? 1073 * 1074 * @og.rev 5.5.5.6 (2012/08/31) 新規追? 1075 * 1076 * @param flag 「href="*******" target="******"?と?形式をそ?まま返すかど?(true:href,target属?/false:リンク) 1077 */ 1078 public void setHrefTarget( final String flag ) { 1079 hrefTarget = nval( getRequestParameter( flag ),hrefTarget ); 1080 } 1081 1082 /** 1083 * 【TAG】リンクアドレスにURLチェ?用の確認キーを付加するかど?[true/false]を指定しま?初期値:false)? 1084 * 1085 * @og.tag 1086 * こ?属?は、URLCheckFilter(org.opengion.hayabusa.filter.URLCheckFilter)と合わせて使用します? 1087 * trueが指定された場合?リンクURLのパラメーターに、URL確認用のパラメーターが?力されます? 1088 * こ?パラメーターを?URLCheckFilterが復号化し、正式なアクセスであるかど?の判定を行います? 1089 * 1090 * 初期値は?"false"(確認キーを?力しな? です? 1091 * 1092 * @og.rev 4.3.7.0 (2009/06/01) 新規追? 1093 * 1094 * @param flag 暗号化するかかど? [true:暗号化す?false:しない] 1095 * @see org.opengion.hayabusa.filter.URLCheckFilter 1096 */ 1097 public void setUseURLCheck( final String flag ) { 1098 useURLCheck = nval( getRequestParameter( flag ),useURLCheck ); 1099 } 1100 1101 /** 1102 * 【TAG】URLチェ?用の確認キーに対して、リンクを開くことのできるユーザーIDを指定しま?初期値:ログインユーザー)? 1103 * 1104 * @og.tag 1105 * URLチェ?用の確認キーに対して、リンクを開くことのできるユーザーID? 1106 * カンマ区?で?します? 1107 * "*"が指定された場合?ユーザーチェ?は行われません? 1108 * 1109 * 初期値は?ログインユーザーです? 1110 * 1111 * @og.rev 4.3.8.0 (2009/08/01) 新規追? 1112 * 1113 * @param user リンクにアクセス可能なユーザー? 1114 */ 1115 public void setUrlCheckUser( final String user ) { 1116 urlCheckUser = nval( getRequestParameter( user ),urlCheckUser ); 1117 } 1118 1119 /** 1120 * 【TAG】外部??ラグイン??ト?クンを利用する場合にプラグインを指定します? 1121 * 1122 * @og.tag 1123 * プラグインの名前を指定する事で、該当?CreateTokenを利用して 1124 * URLに対してト?クンを付与します? 1125 * ??reatetToken_xxxのxxxを指定します? 1126 * 1127 * カンマ区?を?解して、?ラグインを?列として持ちます? 1128 * 適応?前から?番に行います? 1129 * 1130 * @og.rev 5.8.2.1 (2014/12/13) 新規追? 1131 * 1132 * @param name 利用するCreateTokenプラグイン 1133 */ 1134 public void setExtToken( final String name ) { 1135 extToken = nval( getRequestParameter( name ),extToken ); 1136 ctArray = new ArrayList<CreateToken>(); 1137 1138 if( extToken != null && extToken.length() > 0 ){ 1139 String[] tokens = StringUtil.csv2Array( extToken ); 1140 for( String tk :tokens ){ 1141 String cls = HybsSystem.sys( "CreateToken_" + tk ) ; 1142 CreateToken ct = (CreateToken)HybsSystem.newInstance( cls ); 1143 ctArray.add( ct ); 1144 } 1145 } 1146 } 1147 1148 /** 1149 * 【TAG】URLチェ?用の確認キーに対して、リンクの有効期限を指定しま?初期値:60?? 1150 * 1151 * @og.tag 1152 * URLチェ?用の確認キーに対して、リンクが生成されてからの有効期限を?単位で設定します? 1153 * 属?値の先?に'D'をつけることで、日付指定を行うことができます? 1154 * (D20090612 ?20090612まで(当日を含?は有効) 1155 * 1156 * 初期値は、現在時間を基準として+ "1440"(1日) です? 1157 * 1158 * @og.rev 4.3.8.0 (2009/08/01) 新規追? 1159 * 1160 * @param time リンクの有効期限(? 1161 */ 1162 public void setUrlCheckTime( final String time ) { 1163 String tm = getRequestParameter( time ); 1164 1165 if( tm != null && tm.length() > 0 && tm.charAt( 0 ) == 'D' ) { 1166 if( tm.length() < 9 ) { 1167 String errMsg = "urlCheckTime属?の日付?YYYYMMDD形式で?して下さ??" 1168 + " 値=" + tm ; // 5.1.8.0 (2010/07/01) errMsg 修正 1169 throw new HybsSystemException( errMsg ); 1170 } 1171 Calendar cal = new GregorianCalendar( 1172 Integer.valueOf( tm.substring( 1, 5 ) ) 1173 ,Integer.valueOf( tm.substring( 5, 7 ) ) - 1 1174 ,Integer.valueOf( tm.substring( 7, 9 ) ) ); 1175 urlCheckTime = cal.getTimeInMillis() + (long)1000 * 60 * 60 * 24 - System.currentTimeMillis(); 1176 } 1177 else { 1178 urlCheckTime = nval( tm, (long)60*24 ) * 1000 * 60; 1179 } 1180 } 1181 1182 /** 1183 * 【TAG】URLチェ?用の暗号化キーを指定しま?初期値:?ォル?? 1184 * 1185 * @og.tag 1186 * URLチェ?に利用される暗号化?キーをして?す? 1187 * 受け側の設?URL_CHECK_CRYPT)に合わせてください? 1188 * 1189 * 未??場合?標準が利用されます? 1190 * 1191 * @og.rev 5.8.8.0 (2015/06/05) 新規追? 1192 * 1193 * @param crypt 暗号化キー 1194 */ 1195 public void setUrlCheckCrypt( final String crypt ) { 1196 urlCheckCrypt = nval( getRequestParameter( crypt ),urlCheckCrypt ); 1197 } 1198 1199 /** 1200 * こ?オブジェクト???表現を返します? 1201 * 基本???目?使用します? 1202 * 1203 * @return こ?クラスの??表現 1204 */ 1205 @Override 1206 public String toString() { 1207 return org.opengion.fukurou.util.ToString.title( this.getClass().getName() ) 1208 .println( "VERSION" ,VERSION ) 1209 .println( "column" ,column ) 1210 .println( "onLink" ,onLink ) 1211 .println( "fileCheck" ,fileCheck ) 1212 .println( "filePath" ,filePath ) 1213 .println( "baseURL" ,baseURL ) 1214 .println( "fileURL" ,fileURL ) 1215 .println( "gamenId" ,gamenId ) 1216 .println( "useGamenId" ,useGamenId ) 1217 .println( "markList" ,markList ) 1218 .println( "xlink" ,xlink ) 1219 .println( "useDirectJump" ,useDirectJump ) 1220 .println( "useRequestCache" ,useRequestCache) 1221 .println( "hrefOnly" ,hrefOnly ) 1222 .println( "hrefTarget" ,hrefTarget ) // 5.5.5.6 (2012/08/31) 1223 .println( "validDuration" ,validDuration ) 1224 .println( "keys" ,keys ) 1225 .println( "vals" ,vals ) 1226 .println( "delKeys" ,delKeys ) 1227 .println( "useURLCheck" ,useURLCheck ) 1228 .println( "urlCheckUser" ,urlCheckUser ) 1229 .println( "urlCheckTime" ,urlCheckTime ) 1230 .println( "Other..." ,getAttributes().getAttribute() ) 1231 .fixForm().toString() ; 1232 } 1233 }