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