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 org.opengion.hayabusa.common.HybsSystem;
019    import org.opengion.hayabusa.common.HybsSystemException;
020    import org.opengion.hayabusa.resource.GUIInfo;
021    import org.opengion.fukurou.util.XHTMLTag;
022    import org.opengion.fukurou.util.TagBuffer;
023    import org.opengion.fukurou.util.StringUtil ;
024    
025    import static org.opengion.fukurou.util.StringUtil.nval ;
026    import org.opengion.fukurou.util.EnumType ;
027    
028    import java.util.Locale ;
029    
030    /**
031     * 戻るã?タン/戻るリンクを表示ã™ã‚‹HTML拡張タグã§ã?通常ã¯custom/query_info.jspã«çµ?¾¼ã¿)ã€?
032     *
033     * custom/query_info.jsp ã«çµ?¿è¾¼ã‚?“ã¨ã§ã€å?ã¦ã®query.jspã«çµ?¾¼ã‚?º‹ãŒã§ãã¾ã™ã?
034     * 戻るã?タン/リンクを表示ã™ã‚‹ã‹ã©ã?‹ã®æ¡ä»¶åˆ¤å®šã?ã€?
035     * ã€?¡ä»¶1?šè?åˆ??èº«ã¸æˆ»ã‚‹æ©Ÿè?ã¯ã‚µãƒã?トã§ãã¾ã›ã‚“ã€?
036     * ã€?¡ä»¶2?šBACK_GAMENID ãŒå­˜åœ¨ã™ã‚‹ã‹ã?ã¾ãŸã?ã€gamenId ã§æŒ?¤ºã•れãŸå?åˆã?ã¿è¡¨ç¤ºã€?
037     * ã€?¡ä»¶3?šcommand="NEW" ã§ã€ã‚­ãƒ£ãƒ?‚·ãƒ¥ã«è¨­å®šã—ã¦ãŠãå¿?¦ãŒã‚ã‚‹ã€?
038     *
039     * @og.formSample
040     * â—å½¢å¼ï¼?lt;og:backGamen keys="?¥?¥?¥" vals="?¥?¥?¥" > ?¥?¥Body?¥?¥ </og:backGamen>
041     * â—body?šã‚ã‚?EVAL_BODY_BUFFERED:BODYを評価ã—ã?{@XXXX} ã‚’è§£æžã—ã¾ã?
042     *
043     * â—Tag定義??
044     *   <og:backGamen
045     *       type               ã€TAG】ã?タンã®ã‚¿ã‚¤ãƒ—[link/button/relLink/relButton/historyBack]を指定ã—ã¾ã?åˆæœŸå€¤:link)
046     *       command            ã€TAGã€?通常使ã?¾ã›ã‚“)æˆ»ã‚‹æ™‚ã«æŒ?®šã™ã‚?command を設定ã§ãã¾ã?åˆæœŸå€¤:RENEW)
047     *       gamenId            ã€TAGã€?通常使ã?¾ã›ã‚“)戻りå?ã®ç”»é¢ã‚’ã‚»ãƒ?ƒˆã—ã¾ã?åˆæœŸå€¤:BACK_GAMENID)
048     *       keys               ã€TAGã€‘ãƒªãƒ³ã‚¯å…ˆã«æ¸¡ã™ã‚­ãƒ¼ã‚’CSVå½¢å¼ã§è¤?•°æŒ?®šã—ã¾ã?
049     *       vals               ã€TAG】keys属æ?ã«å¯¾å¿œã™ã‚‹å?ã‚’CSVå½¢å¼ã§è¤?•°æŒ?®šã—ã¾ã?
050     *       lbl                ã€TAG】ラベルリソースã®ãƒ©ãƒ™ãƒ«IDを指定ã—ã¾ã?
051     *       href               ã€HTML】リンク先ã?URLを指定ã—ã¾ã?
052     *       target             ã€HTML】リンク先ã?表示ターゲãƒ?ƒˆã‚’指定ã—ã¾ã?åˆæœŸå€¤:CONTENTS)
053     *       id                 ã€HTML】è¦ç´?«å¯¾ã—ã¦å›ºæœ‰ã?åå‰(id)ã‚’ã¤ã‘ã‚‹å ´åˆã«è¨­å®šã—ã¾ã?
054     *       lang               ã€HTML】è¦ç´??å†?®¹ã¨ä»–ã?属æ?値ã®è¨?ª?lang,xml:lang)を指定ã—ã¾ã?
055     *       dir                ã€HTML】文字表記ã?æ–¹å?dir)を指定ã—ã¾ã?
056     *       title              ã€HTML】è¦ç´?«å¯¾ã™ã‚‹è£œè¶³çš?ƒ…å ±(title)を設定ã—ã¾ã?
057     *       style              ã€HTML】ã“ã®è¦ç´?«å¯¾ã—ã¦é©ç”¨ã•ã›ã‚‹ã‚¹ã‚¿ã‚¤ãƒ«ã‚·ãƒ¼ãƒ?style)を設定ã—ã¾ã?
058     *       tabindex           ã€HTML】タブã?移動é?(tabindex)を指定ã—ã¾ã?0 ??32767)
059     *       accesskey          ã€HTML】アクセスキー(alt+キーã§ç›´æŽ¥æŒ?®?を割り当ã¦ã¾ã?
060     *       clazz              ã€HTML】è¦ç´?«å¯¾ã—㦠class 属æ?を設定ã—ã¾ã?
061     *       language           ã€TAG】タグå†?ƒ¨ã§ä½¿ç”¨ã™ã‚‹è¨?ªžã‚³ãƒ¼ãƒ‰[ja/en/zh/…]を指定ã—ã¾ã?
062     *       onClick            ã€HTML】JavaScriptã®ã‚¤ãƒ™ãƒ³ãƒ?onClick を設定ã—ã¾ã?ä¾?onClick="renew('query.jsp','QUERY');")
063     *       onBlur             ã€HTML】JavaScriptã®ã‚¤ãƒ™ãƒ³ãƒ?onBlur を設定ã—ã¾ã?ä¾?onBlur="this.value=value.toUpperCase();")
064     *       onFocus            ã€HTML】JavaScriptã®ã‚¤ãƒ™ãƒ³ãƒ?onFocus を設定ã—ã¾ã?
065     *       ondblClick         ã€HTML】JavaScriptã®ã‚¤ãƒ™ãƒ³ãƒ?ondblClick を設定ã—ã¾ã?
066     *       onMouseDown        ã€HTML】JavaScriptã®ã‚¤ãƒ™ãƒ³ãƒ?onMouseDown を設定ã—ã¾ã?
067     *       onMouseUp          ã€HTML】JavaScriptã®ã‚¤ãƒ™ãƒ³ãƒ?onMouseUp を設定ã—ã¾ã?
068     *       onMouseMove        ã€HTML】JavaScriptã®ã‚¤ãƒ™ãƒ³ãƒ?onMouseMove を設定ã—ã¾ã?
069     *       onMouseOut         ã€HTML】JavaScriptã®ã‚¤ãƒ™ãƒ³ãƒ?onMouseOut を設定ã—ã¾ã?
070     *       onMouseOver        ã€HTML】JavaScriptã®ã‚¤ãƒ™ãƒ³ãƒ?onMouseOver を設定ã—ã¾ã?
071     *       debug              ã€TAG】デãƒãƒƒã‚°æƒ??ã‚’å?力ã™ã‚‹ã‹ã©ã?‹[true/false]を指定ã—ã¾ã?åˆæœŸå€¤:false)
072     *   >   ... Body ...
073     *   </og:backGamen>
074     *
075     * â—使用ä¾?
076     *   <og:backGamen keys="displayMsg,clear" vals="MSG0065,true" >
077     *       <img src="{@SYS.JSP}/image/back.gif" alt="{@BACK_GAMENID}" />
078     *       <og:message lbl="MSG0049" />
079     *   </og:backGamen>
080     *
081     * @og.rev 3.1.8.0 (2003/05/16) æ–°è¦ä½œæ?
082     * @og.group ç”»é¢åˆ¶å¾¡
083     *
084     * @version  4.0
085     * @author   Kazuhiko Hasegawa
086     * @since    JDK5.0,
087     */
088    public class BackGamenTag extends HTMLTagSupport {
089            //* ã“ã?プログラãƒ??VERSIONæ–?­—å?を設定ã—ã¾ã™ã?       {@value} */
090            private static final String VERSION = "5.7.1.2 (2013/12/20)" ;
091    
092            private static final long serialVersionUID = 571220131220L ;
093    
094            // 4.0.0 (2005/05/31) JDK5.0 enum 対�
095            /**
096             * type 属æ?ã¨ã—ã¦æŒ?®šã§ãã‚‹é¸æŠžè‚¢ã‚’å®šç¾©ã—ã¾ã™ã?
097             */
098            private static final EnumType<String> CHECK_TYPE =
099                                    new EnumType<String>( "ボタンã®ã‚¿ã‚¤ãƒ?,"link" )
100                                            .append( "link"   ,"戻るリンクを作æ?ã—ã¾ã™ã?" )
101                                            .append( "relLink","戻るリンク(相対パス)を作æ?ã—ã¾ã™ã?" )
102                                            .append( "button" ,"戻るã?タンを作æ?ã—ã¾ã™ã?" )
103                                            .append( "relButton","戻るã?タン(相対パス)を作æ?ã—ã¾ã™ã?" )
104                                            .append( "historyBack","通常ã®ãƒ’ストリãƒãƒƒã‚¯ãƒœã‚¿ãƒ³ã‚’作æ?ã—ã¾ã™ã?" ) ;
105    
106            private String          type            = CHECK_TYPE.getDefault() ;
107            private String          command         = "RENEW" ;
108            private String          gamenId         = null;
109            private String          target          = "CONTENTS";
110            private String          accesskey       = "R";
111            private String[]        keys            = null;
112            private String[]        vals            = null;
113            private String          body            = null;
114            private String          backAddress     = null; // 4.0.1.0 (2007/12/18)
115    
116            /**
117             * Taglibã®é–‹å§‹ã‚¿ã‚°ãŒè¦‹ã¤ã‹ã£ãŸã¨ãã«å‡¦ç?™ã‚?doStartTag() ã‚?オーãƒã?ライドã—ã¾ã™ã?
118             *
119             * @return      後続å?ç??æŒ?¤º( EVAL_BODY_BUFFERED )
120             */
121            @Override
122            public int doStartTag() {
123                    return( EVAL_BODY_BUFFERED );   // Body を評価ã™ã‚‹ã€? extends BodyTagSupport æ™?
124            }
125    
126            /**
127             * Taglibã®ã‚¿ã‚°æœ¬ä½“を処ç?™ã‚?doAfterBody() ã‚?オーãƒã?ライドã—ã¾ã™ã?
128             *
129             * @return      後続å?ç??æŒ?¤º(SKIP_BODY)
130             */
131            @Override
132            public int doAfterBody() {
133                    body = getBodyString();
134    
135                    return(SKIP_BODY);
136            }
137    
138            /**
139             * タグリブオブジェクトをリリースã—ã¾ã™ã?
140             *
141             * キャãƒ?‚·ãƒ¥ã•れã¦å†åˆ©ç”¨ã•れるã?ã§ã€ãƒ•ィールドã?åˆæœŸè¨­å®šã‚’行ã„ã¾ã™ã?
142             *
143             */
144            @Override
145            protected void release2() {
146                    super.release2();
147                    type            = CHECK_TYPE.getDefault() ;
148                    command         = "RENEW" ;
149                    gamenId         = null;
150                    target          = "CONTENTS";
151                    accesskey       = "R";
152                    keys            = null;
153                    vals            = null;
154                    body            = null;
155                    backAddress     = null;
156            }
157    
158            /**
159             * 戻るã?タン/戻るリンクを作æ?ã—ã¾ã™ã?
160             *
161             * @og.rev 3.1.8.0 (2003/05/16) BACK_GAMENID ã®ã‚­ãƒ£ãƒ?‚·ãƒ¥ã®å–り出ã—å?を変更ã™ã‚‹ã€?
162             * @og.rev 3.5.4.0 (2003/11/25) 履歴(history)オブジェクトã?back() メソãƒ?ƒ‰ã‚’利用ã—ãŸæˆ»ã‚‹æ©Ÿè?を追åŠ?—ã¾ã™ã?
163             * @og.rev 4.0.1.0 (2007/12/17) BackAddress対�
164             * @og.rev 5.0.2.0 (2009/11/01) 相対パスã§ã®æˆ»ã‚‹ãƒªãƒ³ã‚¯å¯¾å¿?
165             *
166             * @return  戻るã?タン/戻るリンク
167             */
168            @Override
169            protected String makeTag() {
170                    String rtn = "" ;
171    
172                    if( gamenId == null ) {
173                            gamenId = getBackGamenId() ;
174                    }
175                    if( backAddress == null) { // 4.0.1.0 (2007/12/17)
176                            backAddress = getBackAddress();
177                    }
178    
179                    // 4.0.0 (2005/05/31)
180                    if( "historyBack".equalsIgnoreCase( type ) ) {
181                            String hb = getRequest().getParameter( "historyBack" );
182                            if( "1".equals( hb ) ) {
183                                    rtn = makeHistoryBackTag();
184                            }
185                    }
186                    else {
187                            if( checkCondition( gamenId ) ) {
188                                    set( "target" ,nval( get( "target" ), target ) );
189    
190                                    // 5.0.2.0 (2009/11/01) 相対パスã§ã®æˆ»ã‚‹å¯¾å¿?
191                                    if( "link".equalsIgnoreCase( type ) || "relLink".equalsIgnoreCase( type ) ) {
192                                            rtn = makeLinkTag();
193                                    }
194                                    else if( "button".equalsIgnoreCase( type ) || "relButton".equalsIgnoreCase( type ) ) {
195                                            rtn = makeButtonTag();  // 3.8.1.2 (2005/12/19)
196                                    }
197                                    else {
198                                            String errMsg = "æŒ?®šã? type ã¯ã€ä¸‹è¨˜ã?ç¯?›²ã§æŒ?®šã—ã¦ãã ã•ã„ã€?
199                                                                            + "type=" + type + " : "
200                                                                            + CHECK_TYPE.toString();
201                                            throw new HybsSystemException( errMsg );
202                                    }
203                            }
204                    }
205    
206                    return rtn ;
207            }
208    
209            /**
210             * 戻るリンクを作æ?ã—ã¾ã™ã?
211             *
212             * @og.rev 3.5.5.0 (2004/03/12) 戻るアドレスをã?GUIInfoよりå–å¾—ã™ã‚‹ã‚ˆã?«å¤‰æ›´ã€?
213             * @og.rev 4.0.0.0 (2005/01/31) GUIInfoã®å®Ÿã‚¢ãƒ‰ãƒ¬ã‚¹ã®ãƒ‘ラメータをè?æ…®ã™ã‚‹ã€?
214             * @og.rev 3.7.0.3 (2005/03/01) 戻る行番å·ã‚’ã?BACK_ROW_KEYよりå–å¾—ã—ã€SEL_ROW ã§æ¸¡ã™ã?
215             * @og.rev 4.0.1.0 (2007/12/17) 戻るアドレスをbackAddressを使ã?‚ˆã?«å¤‰æ›´
216             * @og.rev 4.0.2.1 (2007/12/27) リクエスト部ã‹ã‚‰GAMENIDを外ã—ã¦ã?ŸãŒã?二段階戻るå?åˆã«ä¸å?åˆãŒå‡ºãŸãŸã‚å?ã«æˆ»ã?
217             * @og.rev 5.0.2.0 (2009/11/01) 相対パスã§ã®æˆ»ã‚‹ãƒªãƒ³ã‚¯å¯¾å¿?
218             *
219             * @return  戻るリンク
220             */
221            private String makeLinkTag() {
222                    set( "body",getMsglbl( gamenId ) );
223                    String href = get( "href" );
224                    if( href == null) {
225                            // 3.5.5.0 (2004/03/12)
226                            // 5.0.2.0 (2009/11/01) 相対パスã§ã®æˆ»ã‚‹å¯¾å¿?
227                            if( backAddress == null || "relLink".equalsIgnoreCase( type ) ) {// 4.0.1.0 (2007/12/17) ifæ–?¿½åŠ?
228                                    GUIInfo guiInfo = getGUIInfo( gamenId ); // 4.0.0 (2005/01/31)
229                                    if( guiInfo == null ) { return ""; } // 見ã¤ã‹ã‚‰ãªã??åˆã?ã€ã‚¢ã‚¯ã‚»ã‚¹ä¸å¯
230                                    String address = guiInfo.getRealAddress( "index.jsp" );
231                                    href = getRequestParameter( address );
232                            }
233                            else { // 4.0.1.0 (2007/12/17)
234                                    href = backAddress;
235                            }
236                    }
237    
238                    // 3.7.0.3 (2005/03/01) 戻る行番å·ã‚’ã?BACK_ROW_KEYよりå–å¾—ã—ã€SEL_ROW ã§æ¸¡ã™ã?
239                    String rowkey = HybsSystem.BACK_ROW_KEY + getGUIInfoAttri( "KEY" );
240                    String rowVal = (String)getSessionAttribute( rowkey );
241    
242                    String[] keys2 = new String[] { "command","GAMENID","SEL_ROW" };
243                    String[] vals2 = new String[] {  command , gamenId , rowVal   };
244    //              String[] keys2 = new String[] { "command", "SEL_ROW" }; // 4.0.1.0 (2007/12/18)â†?.0.2.1(2007/12/27)GAMENIDを付ã‘るよã?«æˆ»ã?
245    //              String[] vals2 = new String[] {  command , rowVal   }; // 4.0.1.0 (2007/12/18)→上ã¨åŒæ§?
246                    String urlEnc2 = XHTMLTag.urlEncode( keys2,vals2 );
247                    href = XHTMLTag.addUrlEncode( href,urlEnc2 );
248    
249                    String urlEnc = XHTMLTag.urlEncode( keys,vals );
250                    href = XHTMLTag.addUrlEncode( href,urlEnc );
251    
252                    set( "href",href );
253    
254                    return XHTMLTag.link( getAttributes() ) ;
255            }
256    
257            /**
258             * 戻るã?タンã®ãƒ•ォーãƒ?‚’作æ?ã—ã¾ã™ã?
259             *
260             * @og.rev 3.5.5.0 (2004/03/12) 戻るアドレスをã?GUIInfoよりå–å¾—ã™ã‚‹ã‚ˆã?«å¤‰æ›´ã€?
261             * @og.rev 3.5.5.5 (2004/04/23) hidden ã®å‡ºåŠ›ã«ã€XHTMLTag.hidden を使用ã—ã¾ã™ã?
262             * @og.rev 3.8.1.2 (2005/12/19) メソãƒ?ƒ‰å変更ã€inputタグ⇒buttonタグ変更
263             * @og.rev 4.0.1.0 (2007/12/17) BACK_ADDRESS対�
264             * @og.rev 5.0.2.0 (2009/11/01) 相対パスã§ã®æˆ»ã‚‹ãƒªãƒ³ã‚¯å¯¾å¿?
265             *
266             * @return  戻るã?タンã®ãƒ•ォーãƒ?
267             */
268            private String makeButtonTag() {
269    
270                    String href = get( "href" );
271                    if( href == null ) {
272                            // 3.5.5.0 (2004/03/12)
273                            // 5.0.2.0 (2009/11/01) 相対パスã§ã®æˆ»ã‚‹å¯¾å¿?
274                            if( backAddress == null || "relButton".equalsIgnoreCase( type ) ) { // 4.0.1.0 (2007/12/18) ifæ–?Œ–
275                                    GUIInfo guiInfo = getGUIInfo( gamenId );
276                                    String address = guiInfo.getRealAddress();
277                                    set( "action", address + "index.jsp" );
278                            }
279                            else {
280                                    set( "action", backAddress ); // 4.0.1.0 (2007/12/18)
281                            }
282                    }
283                    else {
284                            set( "action",href ) ;
285                    }
286    
287                    StringBuilder body = new StringBuilder( HybsSystem.BUFFER_MIDDLE );
288    
289                    // 3.8.1.2 (2005/12/19) inputタグ⇒buttonã‚¿ã‚°ã¸å¤‰æ›´ã€?
290                    TagBuffer tag = new TagBuffer( "button" );
291                    tag.add( "type","submit" );
292                    tag.add( "accesskey",get( "accesskey" ) );
293                    tag.setBody( getMsglbl( gamenId ) );
294                    body.append( tag.makeTag() );
295                    body.append( HybsSystem.CR );
296    
297                    // command ã‚?hidden ã§ä½œæ?ã—ã¾ã™ã?
298                    body.append( XHTMLTag.hidden( "command",command ) );    // hidden(name,value);
299                    body.append( HybsSystem.CR );
300    
301                    // GAMENID ã‚?hidden ã§ä½œæ?ã—ã¾ã™ã?
302                    body.append( XHTMLTag.hidden( "GAMENID",gamenId ) );    // hidden(name,value);
303                    body.append( HybsSystem.CR );
304    
305                    // keys,vals ã‚?hidden ã§ä½œæ?ã—ã¾ã™ã?
306                    if( keys != null ) {
307                            if( keys.length != vals.length ) {
308                                    String errMsg = "キーã¨ãƒãƒªãƒ¥ãƒ¼ã®å€‹æ•°ãŒç•°ãªã‚Šã¾ã™ã?"
309                                                            + HybsSystem.CR
310                                                            + " keys.length=[" + keys.length + "]  vals.length=[" + vals.length + "]"
311                                                            + " keys=" + StringUtil.array2csv( keys ) + HybsSystem.CR
312                                                            + " vals=" + StringUtil.array2csv( vals )  ;    // 5.1.8.0 (2010/07/01) errMsg 修正
313                                    throw new HybsSystemException( errMsg );
314                            }
315    
316                            for( int i=0; i<keys.length; i++ ) {
317                                    body.append( XHTMLTag.hidden( keys[i],vals[i] ) );      // hidden(name,value);
318                                    body.append( HybsSystem.CR );
319                            }
320                    }
321    
322                    // 3.7.0.3 (2005/03/01) 戻る行番å·ã‚’ã?BACK_ROW_KEYよりå–å¾—ã—ã€SEL_ROW ã§æ¸¡ã™ã?
323                    String rowkey = HybsSystem.BACK_ROW_KEY + getGUIInfo( "GUI.KEY" );
324                    String rowVal = (String)getSessionAttribute( rowkey );
325                    // 3.7.0.5 (2005/04/11) null ã®æ™‚ã?ã€è¿”ã•ãªã?‚ˆã?«å¤‰æ›´
326                    if( rowVal != null ) {
327                            body.append( XHTMLTag.hidden( "SEL_ROW",rowVal ) );     // hidden(name,value);
328                            body.append( HybsSystem.CR );
329                    }
330    
331                    set( "body",body.toString() );
332    
333                    return XHTMLTag.form( getAttributes() ) ;
334            }
335    
336            /**
337             * 戻るリンク(historyBack)を作æ?ã—ã¾ã™ã?
338             *
339             * @og.rev 3.5.4.0 (2003/11/25) 履歴(history)オブジェクトã?back() メソãƒ?ƒ‰ã‚’利用ã—ãŸæˆ»ã‚‹æ©Ÿè?を追åŠ?—ã¾ã™ã?
340             *
341             * @return  戻るリンク
342             */
343            private String makeHistoryBackTag() {
344                    StringBuilder link = new StringBuilder();
345    
346                    link.append( "<a onClick=\"history.back()\">" );
347                    link.append( getMsglbl( gamenId ) );
348                    link.append( "</a>" );
349    
350                    return link.toString() ;
351            }
352    
353            /**
354             * BACK_GAMENID ã®å€¤ã‚’å–りå?ã—ã¾ã™ã?
355             *
356             * 値ã¯ã€ã‚­ãƒ£ãƒ?‚·ãƒ¥ã§ã¯ãªãã?session より HybsSystem.BACK_GAMENID_KEY をキーã«
357             * å–り出ã—ã¾ã™ã?
358             *
359             * @og.rev 3.1.8.0 (2003/05/16) BACK_GAMENID ã®ã‚­ãƒ£ãƒ?‚·ãƒ¥ã®å–り出ã—å?を変更ã™ã‚‹ã€?
360             *
361             * @return  BACK_GAMENID ã®å€¤
362             */
363            private String getBackGamenId() {
364                    String key = HybsSystem.BACK_GAMENID_KEY + getGUIInfoAttri( "KEY" );    // 4.0.0 (2005/01/31)
365                    return (String)getSessionAttribute( key );
366            }
367    
368            /**
369             * BACK_ADDRESS ã®å€¤ã‚’å–りå?ã—ã¾ã™ã?
370             *
371             * 値ã¯ã€ã‚­ãƒ£ãƒ?‚·ãƒ¥ã§ã¯ãªãã?session より HybsSystem.BACK_ADDRESS_KEY をキーã«
372             * å–り出ã—ã¾ã™ã?
373             *
374             * @og.rev 4.0.1.0 (2007/12/17) メソãƒ?ƒ‰è¿½åŠ?
375             *
376             * @return  BACK_GAMENID ã®å€¤
377             */
378            private String getBackAddress() {
379                    String key = HybsSystem.BACK_ADDRESS_KEY + getGUIInfoAttri( "KEY" );    // 4.0.0 (2005/01/31)
380                    return (String)getSessionAttribute( key );
381            }
382    
383            /**
384             * ã€TAG】ã?タンã®ã‚¿ã‚¤ãƒ—[link/button/relLink/relButton/historyBack]を指定ã—ã¾ã?åˆæœŸå€¤:link)ã€?
385             *
386             * @og.tag
387             * button ã¨è¨­å®šã™ã‚‹ã¨ã€æˆ»ã‚‹ã?タンã«ã€link ã¨è¨­å®šã™ã‚‹ã¨ã€æˆ»ã‚‹ãƒªãƒ³ã‚¯ã«ãªã‚Šã¾ã™ã?
388             * historyBack ã¯ã€IEç­‰ã?戻るæ“作ã¨åŒã˜ã§ã€JavaScriptã®ãƒ’ストリーãƒãƒƒã‚¯ã‚’行ã„ã¾ã™ã?
389             * ã¾ãŸã?relButtonã€relLinkã¨ã™ã‚‹ã¨ã€ãれãžã‚Œç›¸å¯¾ãƒ‘ス(ç”»é¢IDã‹ã‚‰é£›ã?å…ˆã?アドレスをå?ã«ç”Ÿæ?)
390             * ã§æˆ»ã‚Šå?ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ãŒç”Ÿæˆã•れã¾ã™ã?
391             * åˆæœŸå€¤ã¯ã€æˆ»ã‚‹ãƒªãƒ³ã‚¯(link)ã§ã™ã?
392             *
393             * <table border="1" frame="box" rules="all" >
394             *      <tr><th>タイ�      </th><th>説�/th></tr>
395             *      <tr><td>link                </td><td>戻るリンク</td></tr>
396             *      <tr><td>button              </td><td>戻るã?タン</td></tr>
397             *      <tr><td>relLink             </td><td>戻るリンク(相対パス)</td></tr>
398             *      <tr><td>relButton   </td><td>戻るã?タン(相対パス)</td>></tr>
399             *      <tr><td>historyBack </td><td>通常ã®ãƒ’ストリãƒãƒƒã‚¯ãƒœã‚¿ãƒ³</td></tr>
400             * </table>
401             *
402             * @og.rev 5.0.2.0 (2009/11/01) 相対パスã§ã®æˆ»ã‚‹ãƒªãƒ³ã‚¯å¯¾å¿?
403             *
404             * @param   tp ボタンã®ã‚¿ã‚¤ãƒ—[link/button/relLink/relButton/historyBack]
405             */
406            public void setType( final String tp ) {
407                    type = CHECK_TYPE.nval( tp );
408            }
409    
410            /**
411             * ã€TAGã€?通常使ã?¾ã›ã‚“)æˆ»ã‚‹æ™‚ã«æŒ?®šã™ã‚?command を設定ã§ãã¾ã?åˆæœŸå€¤:RENEW)ã€?
412             *
413             * @og.tag
414             * 通常ã¯ã€RENEW ã§æˆ»ã‚Šã¾ã™ã?
415             * (åˆæœŸå€¤ã¯ã€RENEW ãªã®ã§è¨­å®šä¸è¦ã§ã™ã?)
416             *
417             * @param       cmd コマン�
418             */
419            public void setCommand( final String cmd ) {
420                    command = nval( getRequestParameter( cmd ),command );
421                    if( command != null ) { command = command.toUpperCase(Locale.JAPAN); }
422            }
423    
424            /**
425             * ã€TAGã€?通常使ã?¾ã›ã‚“)戻りå?ã®ç”»é¢ã‚’ã‚»ãƒ?ƒˆã—ã¾ã?åˆæœŸå€¤:BACK_GAMENID)ã€?
426             *
427             * @og.tag
428             * 通常ã¯ã€è?å‹•çš„ã«ã€BACK_GAMENID ã®å€¤ãŒã‚»ãƒ?ƒˆã•れã¾ã™ãŒã€?
429             * å…ˆç¥–ã«æˆ»ã‚?ç”»é¢?¡â‡’ç”»é¢?¢â‡’ç”»é¢?£ ã®ã¨ãã«ã€ç”»é¢?¡ã«æˆ»ã‚?å ´åˆã‚„ã€?
430             * 別ã®ç”»é¢ã«ã€??ã‚??åˆã«ã€ç›´æŽ¥æŒ?®šã—ã¾ã™ã?
431             * (åˆæœŸå€¤ã¯ã€æ¥ãŸç”»é¢?šBACK_GAMENID ã§ã™ã?ã§ã€è¨­å®šä¸è¦ã§ã™ã?)
432             * 値ã¯ã€ã‚­ãƒ£ãƒ?‚·ãƒ¥ã§ã¯ãªãã?session より HybsSystem.BACK_GAMENID_KEY をキーã«
433             * å–り出ã—ã¾ã™ã?
434             * ã“れã¯ã€command="NEW" ã§ã€BACK_GAMENID リクエストãŒå­˜åœ¨ã—ã?BACK_GAMENID ã¨
435             * 自åˆ??身ã®ç”»é¢IDãŒç•°ãªã‚‹å?åˆã?ã¿ã€RequestCacheTag#backGamenIdSet メソãƒ?ƒ‰ã§
436             * session ã«ç™»éŒ²ã•れã¾ã™ã?
437             *
438             * @param   id 戻りå?ã®ç”»é¢ID
439             */
440            public void setGamenId( final String id ) {
441                    gamenId = nval( getRequestParameter( id ),gamenId );
442            }
443    
444            /**
445             * ã€TAGã€‘ãƒªãƒ³ã‚¯å…ˆã«æ¸¡ã™ã‚­ãƒ¼ã‚’CSVå½¢å¼ã§è¤?•°æŒ?®šã—ã¾ã™ã?
446             *
447             * @og.tag
448             * 戻る時ã«ã€æ¤œç´¢æ™‚ã?キャãƒ?‚·ãƒ¥ã«æŒ?®šã—ãŸå¼•æ•°ä»¥å¤–ã«æŒ?®šã—ãŸã‚Šã€åˆ¥ã®å€¤ã«ç½®ãæ›ãˆãŸã‚?
449             * ã™ã‚‹å ´åˆã?キーを設定ã§ãã¾ã™ã?カンマ区åˆ?‚Šã§è¤?•°æŒ?®šã§ãã¾ã™ã?
450             * vals 属æ?ã«ã¯ã€ã‚­ãƒ¼ã«å¯¾å¿œã™ã‚‹å?ã‚’ã?設定ã—ã¦ãã ã•ã„ã€?
451             * ä¾?<b>keys="displayMsg,clear"</b> vals="MSG0065,true"
452             * åˆ?§£æ–¹æ³•ã?ã€CSV変数をå?ã«åˆ?§£ã—ã¦ã‹ã‚‰ã€getRequestParameter ã§å€¤ã‚’å–å¾—ã—ã¾ã™ã?
453             * ã“ã†ã—ãªã?¨ãƒ??タ自身ã«ã‚«ãƒ³ãƒžã‚’æŒã£ã¦ã?‚‹å ´åˆã«åˆ?§£ã‚’ミスる為ã§ã™ã?
454             *
455             * @og.rev 3.5.6.2 (2004/07/05) CommonTagSupport#getCSVParameter を使用
456             *
457             * @param       key ãƒªãƒ³ã‚¯å…ˆã«æ¸¡ã™ã‚­ãƒ¼(例:keys="displayMsg,clear")
458             * @see         #setVals( String )
459             */
460            public void setKeys( final String key ) {
461                    keys = getCSVParameter( key );
462            }
463    
464            /**
465             * ã€TAG】keys属æ?ã«å¯¾å¿œã™ã‚‹å?ã‚’CSVå½¢å¼ã§è¤?•°æŒ?®šã—ã¾ã™ã?
466             *
467             * @og.tag
468             * キーã«è¨­å®šã—ãŸå?ã‚’ã?カンマ区åˆ?‚Šæ–?­—ã§è¤?•°ã—ã¦å‡ºæ¥ã¾ã™ã?
469             * æŒ?®šé?åºã?ã€ã‚­ãƒ¼ã¨åŒã˜ã«ã—ã¦ãŠã„ã¦ä¸‹ã•ã??
470             * ä¾?keys="displayMsg,clear" <b>vals="MSG0065,true"</b>
471             * åˆ?§£æ–¹æ³•ã?ã€CSV変数をå?ã«åˆ?§£ã—ã¦ã‹ã‚‰ã€getRequestParameter ã§å€¤ã‚’å–å¾—ã—ã¾ã™ã?
472             * ã“ã†ã—ãªã?¨ãƒ??タ自身ã«ã‚«ãƒ³ãƒžã‚’æŒã£ã¦ã?‚‹å ´åˆã«åˆ?§£ã‚’ミスる為ã§ã™ã?
473             *
474             * @og.rev 3.5.6.2 (2004/07/05) CommonTagSupport#getCSVParameter を使用
475             *
476             * @param       val keys属æ?ã«å¯¾å¿œã™ã‚‹å?(例:vals="MSG0065,true")
477             * @see         #setKeys( String )
478             */
479            public void setVals( final String val ) {
480                    vals = getCSVParameter( val );
481            }
482    
483            /**
484             * ã€HTML】リンク先ã?表示ターゲãƒ?ƒˆã‚’指定ã—ã¾ã?åˆæœŸå€¤:CONTENTS)ã€?
485             *
486             * @og.tag
487             * リンク先ã?æ–?›¸ã‚’表示ã•ã›ã‚‹ãƒ•レーãƒ??ã¾ãŸã?ウィンドウã®åå‰ã‚’指定ã—ã¾ã™ã?
488             *
489             * @param       tgt リンク先ã?表示ターゲãƒ?ƒˆ
490             */
491            public void setTarget( final String tgt ) {
492                    set( "target",getRequestParameter( tgt ) );
493            }
494    
495            /**
496             * ã€HTML】リンク先ã?URLを指定ã—ã¾ã™ã?
497             *
498             * @og.tag リンク先ã?URLを指定ã—ã¾ã™ã?
499             *
500             * @param       href リンク先ã?URL
501             */
502            public void setHref( final String href ) {
503                    set( "href",getRequestParameter( href ) );
504            }
505    
506            /**
507             * メãƒ?‚»ãƒ¼ã‚¸ãƒ©ãƒ™ãƒ«(msglbl)ã‚’ã‚»ãƒ?ƒˆã—ã¾ã™ã?
508             *
509             * メãƒ?‚»ãƒ¼ã‚¸ãƒ©ãƒ™ãƒ«ã¯ã€meg属æ?ã‹ã?lbl属æ?ã§ç™»éŒ²ã•れãŸå?ã‚’ã?
510             * ãれãžã‚Œã®ãƒªã‚½ãƒ¼ã‚¹ã«å¿œã˜ã¦å?¨?ªžã«å¤‰æ›ã—ãŸçµæžœã‚’æ?ç´ã—ã¦ã?¾ã™ã?
511             * meg属æ? 㨠lbl属æ?ã¯ã€åŒæ™‚登録ã§ãã¾ã›ã‚“ã€?
512             *
513             * @og.rev 5.7.1.2 (2013/12/20) msg �msglbl 変更
514             *
515             * @param        gamenId ç”»é¢ID
516             *
517             * @return   メãƒ?‚»ãƒ¼ã‚¸ãƒ©ãƒ™ãƒ«
518             */
519            private String getMsglbl( final String gamenId ) {
520                    StringBuilder rtn = new StringBuilder();
521    //              String msg = getMsglbl();
522                    String msglbl = getMsglbl();    // 5.7.1.2 (2013/12/20) msg �msglbl 変更
523    
524    //              if( msg != null ) {
525    //                      rtn.append( msg );
526                    if( msglbl != null ) {
527                            rtn.append( msglbl );
528                            set( "accesskey",nval( get( "accesskey" ),accesskey ) );
529                            rtn.append( "(" ).append( get( "accesskey" ) ).append( ")" ) ;
530                    }
531                    else if( body != null && body.length() > 0 ) {
532                            rtn.append( body );
533                    }
534                    else {
535                            GUIInfo guiInfo = getGUIInfo( gamenId );                // 4.0.0 (2005/01/31)
536                            if( guiInfo == null ) { return ""; }    // 見ã¤ã‹ã‚‰ãªã??åˆã?ã€ã‚¢ã‚¯ã‚»ã‚¹ä¸å¯
537    
538                            rtn.append( guiInfo.getLongName() );
539                    }
540    
541                    return rtn.toString() ;
542            }
543    
544            /**
545             * ç”»é¢ã«æˆ»ã‚‹ã?タン/リンクを表示ã™ã‚‹ã‹ã©ã?‹ã‚’æ¡ä»¶åˆ¤å®šã—ã¾ã™ã?
546             * 引数㮠gamenId ã¯ã€BACK_GAMENID ã®äº‹ã§ã€ã“ã®ã‚¿ã‚°ã®å±žæ?定義ã§è¨­å®šã•れã¦
547             * ã?ªã??åˆã?ã€session よりã€BACK_GAMENID ã‚’å–りå?ã—ã¾ã™ã?ã¤ã¾ã‚Šã?å–り出ã™ç‚ºã«ã¯ã€?
548             * command="NEW" ã§ã€ã‚­ãƒ£ãƒ?‚·ãƒ¥ã«è¨­å®šã—ã¦ãŠãå¿?¦ãŒã‚りã¾ã™ã?
549             *
550             * éšæ™‚ã€æ¡ä»¶ã‚’追åŠ?—ã¦ã?ã¾ã™ã?
551             *
552             * æ¡ä»¶1?šè?åˆ??èº«ã¸æˆ»ã‚‹æ©Ÿè?ã¯ã‚µãƒã?トã§ãã¾ã›ã‚“ã€?
553             * <del>æ¡ä»¶2?šBACK_GAMENID ãŒå­˜åœ¨ã™ã‚‹ã‹ã?ã¾ãŸã?ã€gamenId ã§æŒ?¤ºã•れãŸå?åˆã?ã¿è¡¨ç¤ºã€?/del>
554             * æ¡ä»¶3?šcommand="NEW" ã§ã€ã‚­ãƒ£ãƒ?‚·ãƒ¥ã«è¨­å®šã—ã¦ãŠãå¿?¦ãŒã‚ã‚‹ã€?
555             *
556             * @og.rev 3.5.5.0 (2004/03/12) ãƒ?ƒãƒ?‚°æƒ??ã‚’å?力ã™ã‚‹ã‚ˆã?«æ©Ÿè?追åŠ?
557             *
558             * @param        gmnId ç”»é¢ID(BACK_GAMENID)
559             *
560             * @return   åˆ¤å®šçµæžœ
561             */
562            private boolean checkCondition( final String gmnId ) {
563    
564                    String thisGamen = getGUIInfoAttri( "KEY" );    // 4.0.0 (2005/01/31)
565                    boolean rtn = ( gmnId != null ) &&
566                                                    ( gmnId.length() > 0 ) &&
567                                                    ( ! gmnId.equals( thisGamen ) ) ;
568    
569                    // 3.5.5.0 (2004/03/12)
570                    if( isDebug() ) {
571                            String cmd =pageContext.getRequest().getParameter( "command" );
572    
573                            StringBuilder buf = new StringBuilder();
574                            buf.append( getDocumentLink() );                // 4.0.0 (2005/02/28)
575                            buf.append( "<pre>" );
576                            buf.append( "command  =[" ).append( cmd       ).append( "]" ).append( HybsSystem.CR );
577                            buf.append( "type     =[" ).append( type      ).append( "]" ).append( HybsSystem.CR );
578                            buf.append( "gamenId  =[" ).append( gmnId     ).append( "]" ).append( HybsSystem.CR );
579                            buf.append( "thisGamen=[" ).append( thisGamen ).append( "]" ).append( HybsSystem.CR );
580                            buf.append( "checkCondition=[" ).append( rtn  ).append( "]" );
581                            buf.append( "</pre>" );
582                            jspPrint( buf.toString() );
583                    }
584    
585                    return rtn ;
586            }
587    }