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