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    /**
021     * æŒ?®šã•れ㟠value 値ã®{@XXXX} 変数ãŒè¨­å®šã•れãŸå ´åˆã?ã¿è¡¨ç¤ºã™ã‚‹ã‚¿ã‚°ã§ã™ã?
022     *
023     * value 値ã«ã€{@XXXX} 変数を使用ã—ã¦ã€ãƒªã‚¯ã‚¨ã‚¹ãƒˆå?ãŒè¨­å®šã•れãŸå ´åˆã?ã¿
024     * ãã?値を表示ã—ã¾ã™ã?ã“れã¯ã€{@XXXX} 変数ã¨å›ºå®šå?ã‚’çµ?¿åˆã‚ã›ãŸå ´åˆã§ã‚?
025     * åŒæ§˜ã«ã€å?ãŒè¨­å®šã•れã¦ã?ªã??åˆã?ã€ä½¿ç”¨ã•れã¾ã›ã‚“ã€?
026     * defaultVal ãŒè¨­å®šã•れã¦ãŠã‚Šã€ãƒªã‚¯ã‚¨ã‚¹ãƒˆå?ãŒè¨­å®šã•れã¦ã?ªã??åˆã?defaultVal 値ã?
027     * 使用ã•れã¾ã™ã?
028     * ã“ã?ã‚¿ã‚°ãŒä½¿ç”¨ã•れるケースã®ä»£è¡¨ã¯ã€SQLã§ã® order by å¥ã§ã™ã?ä¸?ˆ¬ã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆæ™‚ã«ã¯ã€?
029     * order by å¥ã‚’リクエストã§è¨­å®šã—ã¦ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒæ¤œç´¢ã™ã‚‹æ™‚ã«ã€å?り替ãˆãŒã§ãるよã†ã«
030     * ã—ã¾ã™ã?別画é¢ã‹ã‚‰ã€ãƒªãƒ³ã‚¯ç­‰ã§ç”»é¢ã‚’呼ã³å‡ºã™å?åˆã?ã€??常 order by å¥ã®æ¡ä»¶ã¾ã§ã€?
031     * æŒ?®šã—ã¾ã›ã‚“。ãã®ã‚ˆã†ãªå ´åˆã«å‚™ãˆã¦ã€og:appear ã‚¿ã‚°ã§defaultVal 値を設定ã—ã¦ãŠãã€?
032     * 未æŒ?®šæ™‚ã®æ¤œç´¢é ?‚’äºˆã‚æŒ?®šã—ã¦ãŠãã¾ã™ã?
033     *
034     * @og.formSample
035     * â—å½¢å¼ï¼?lt;og:appear startKey="[order by|…]" value="…" defaultVal="[…]" />
036     * â—body?šãªã?
037     *
038     * â—Tag定義
039     *   <og:appear
040     *       startKey           ã€TAG】開始文字å?を設定ã—ã¾ã?åˆæœŸå€¤:"")
041     *       value            â—‹ã?TAG】å?ã‚’ã‚»ãƒ?ƒˆã—ã¾ã?æŒ?®šã•れãŸå€¤ã?設定ã•れã¦ã?‚‹å ´åˆã?ã¿ä½¿ç”¨ã•れã¾ã?(å¿??)
042     *       defaultVal         ã€TAG】å?期å?を設定ã—ã¾ã?value値ãŒNULLã®å ´åˆã«ã€ã“ã®åˆæœŸå€¤ãŒè¡¨ç¤º)
043     *       debug              ã€TAG】デãƒãƒƒã‚°æƒ??ã‚’å?力ã™ã‚‹ã‹ã©ã?‹[true/false]を指定ã—ã¾ã?åˆæœŸå€¤:false)
044     *   />
045     *
046     * â—使用ä¾?
047     * <!-- DB検索 SQLæ–?¨˜è¿° debug="true" ã§SQLæ–?‚’確èªã§ãã¾ã™ã?-->
048     * <og:query command="{@command}" debug="{@debug}" maxRowCount="{@maxRowCount}">
049     *         select CLM,NAME_JA,LABEL_NAME,URL,KBSAKU,
050     *                 SYSTEM_ID,LANG,FGJ,(CASE WHEN URL IS NULL THEN 0 ELSE 1 END) AS ONMARK
051     *         from GF41
052     *     <!-- 検索æ¡ä»¶ã§WhereTagを使用ã™ã‚Œã°{@xxxx}ãŒNULLã®å ´åˆã?ãã?æ¡ä»¶ã¯ç„¡è¦–ã•れã¾ã™ã? -->
053     *     <og:where>
054     *         <og:and value = "FGJ        in  ('0','1')"      />
055     *         <og:and value = "SYSTEM_ID  =  '{@SYSTEM_ID}'"     />
056     *         <og:and value = "LANG       =  '{@LANG}'"          />
057     *         <og:and value = "CLM        like '{@CLM}%'"        />
058     *         <og:and value = "NAME_JA    like '{@NAME_JA}%'"    />
059     *         <og:and value = "LABEL_NAME like '{@LABEL_NAME}%'" />
060     *         <og:and value = "KBSAKU     =    '{@KBSAKU}'"      />
061     *     </og:where>
062     *     <!-- ORDER BYå¥ã§AppearTagを使用ã™ã‚Œã°{@ORDER_BY}ãŒNULLã®å ´åˆã?ORDER BYå¥ã¯ç„¡è¦–ã•れã¾ã™ã? -->
063     *     <!-- ã¾ãŸã?{@ORDER_BY}ãŒNULLã®å ´åˆã«ã€defaultVal属æ?を指定ã™ã‚Œã?ã€ãã®å€¤ã§ORDER BY表示ã•れã¾ã™ã? -->
064     *     <og:appear startKey = "order by" value = "{@ORDER_BY}"
065     *                 defaultVal = "SYSTEM_ID,CLM,LANG" />
066     * </og:query>
067     *
068     * @og.group ç”»é¢éƒ¨å“?
069     *
070     * @version  4.0
071     * @author      Kazuhiko Hasegawa
072     * @since    JDK5.0,
073     */
074    public class AppearTag extends CommonTagSupport {
075            //* ã“ã?プログラãƒ??VERSIONæ–?­—å?を設定ã—ã¾ã™ã?       {@value} */
076            private static final String VERSION = "4.0.0.0 (2005/08/31)" ;
077    
078            private static final long serialVersionUID = 400020050831L ;
079    
080            private String   startKey    = "";
081            private String   value       = null;
082            private String   defaultVal  = null;
083    
084            /**
085             * Taglibã®çµ‚äº?‚¿ã‚°ãŒè¦‹ã¤ã‹ã£ãŸã¨ãã«å‡¦ç?™ã‚?doEndTag() ã‚?オーãƒã?ライドã—ã¾ã™ã?
086             *
087             * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応ã?release2() ã‚?doEndTag()ã§å‘¼ã¶ã€?
088             *
089             * @return      後続å?ç??æŒ?¤º(EVAL_PAGE)
090             */
091            @Override
092            public int doEndTag() {
093                    debugPrint();           // 4.0.0 (2005/02/28)
094                    String output = getRequestParameter( value );
095                    if( isNull() ) {
096                            output = defaultVal;
097                    }
098    
099                    if( output != null ) {
100                            jspPrint( startKey + " " + output );
101                    }
102    
103                    return(EVAL_PAGE);
104            }
105    
106            /**
107             * タグリブオブジェクトをリリースã—ã¾ã™ã?
108             *
109             * キャãƒ?‚·ãƒ¥ã•れã¦å†åˆ©ç”¨ã•れるã?ã§ã€ãƒ•ィールドã?åˆæœŸè¨­å®šã‚’行ã„ã¾ã™ã?
110             *
111             * @og.rev 2.0.0.4 (2002/09/27) カスタãƒ?‚¿ã‚°ã® release() メソãƒ?ƒ‰ã‚’ã?追åŠ?
112             * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応ã?release2() ã‚?doEndTag()ã§å‘¼ã¶ã€?
113             *
114             */
115            @Override
116            protected void release2() {
117                    super.release2();
118                    startKey    = "";
119                    value       = null;
120                    defaultVal  = null;
121            }
122    
123            /**
124             * ã€TAG】開始文字å?を設定ã—ã¾ã?åˆæœŸå€¤:"")ã€?
125             *
126             * @og.tag
127             * ã“ã?キーã¯ã€ãƒãƒªãƒ¥ãƒ¼ã¨æŽ¥ç¶šã•れる場åˆã«ç©ºç™½æ–?­—ã‚’ä¸?¤æŒ¿å…¥ã—ã¾ã™ã?
128             * <del>ã“ã?値ã¯,固定å?ã®ã¿è¨­å®šå¯èƒ½ã§ã™ã?{&#064;XXXX}æ–?­—ã?使用ã§ãã¾ã›ã‚“ã€?/del>
129             *
130             * @param       val 開始文字å?(例:startKey="order by")
131             */
132            public void setStartKey( final String val ) {
133                    startKey = nval( getRequestParameter( val ),startKey );
134            }
135    
136            /**
137             * ã€TAG】å?ã‚’ã‚»ãƒ?ƒˆã—ã¾ã?æŒ?®šã•れãŸå€¤ã?設定ã•れã¦ã?‚‹å ´åˆã?ã¿ä½¿ç”¨ã•れã¾ã?ã€?
138             *
139             * @og.tag
140             * æŒ?®šã•れãŸå€¤ã?設定ã•れã¦ã?‚‹å ´åˆã?ã¿ã€?–‹å§‹æ–‡å­—å?(startKey)ã¨çµ?¿åˆã‚ã›ã‚Œã¦ã€ä½¿ç”¨ã•れã¾ã™ã?
141             * ã“れã¯ã€ä¸?ˆ¬ã«value値ãŒå¤‰å‹•ã™ã‚‹å ´åˆã«ã€defaultVal ç­‰ã«é‡è¤?™ã‚‹å?ã‚?
142             * 設定ã—ãŸããªã??åˆã«ä½¿ç”¨ã—ã¾ã™ã?{&#064;XXXX}æ–?­—ãŒä½¿ç”¨ã§ãã¾ã™ã?
143             *
144             * @param       val 値
145             */
146            public void setValue( final String val ) {
147                    value = val;
148            }
149    
150            /**
151             * ã€TAG】å?期å?を設定ã—ã¾ã?value値ãŒNULLã®å ´åˆã«ã€ã“ã®åˆæœŸå€¤ãŒè¡¨ç¤º)ã€?
152             *
153             * @og.tag
154             * value値ãŒNULL(æŒ?®šã•れãªã?ã®å ´åˆã«ã€ã“ã®åˆæœŸå€¤ãŒå?ã¨ã—ã¦ä½¿ç”¨ã•れã¾ã™ã?
155             *
156             * @param       val åˆæœŸå€¤
157             */
158            public void setDefaultVal( final String val ) {
159                    defaultVal = nval( getRequestParameter( val ),defaultVal );
160            }
161    
162            /**
163             * ã“ã?オブジェクトã?æ–?­—å?表ç¾ã‚’è¿”ã—ã¾ã™ã?
164             * 基本çš?«ãƒ?ƒãƒ?‚°ç›®çš?«ä½¿ç”¨ã—ã¾ã™ã?
165             *
166             * @return ã“ã?ã‚¯ãƒ©ã‚¹ã®æ–?­—å?表ç¾
167             */
168            @Override
169            public String toString() {
170                    return org.opengion.fukurou.util.ToString.title( this.getClass().getName() )
171                                    .println( "VERSION"             ,VERSION        )
172                                    .println( "startKey"    ,startKey       )
173                                    .println( "value"               ,value          )
174                                    .println( "defaultVal"  ,defaultVal     )
175                                    .println( "Other..."    ,getAttributes().getAttribute() )
176                                    .fixForm().toString() ;
177            }
178    }