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 }