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