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