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 *
129 * @param val 開始文字å?(例:startKey="order by")
130 */
131 public void setStartKey( final String val ) {
132 startKey = nval( getRequestParameter( val ),startKey );
133 }
134
135 /**
136 * 【TAG】å?をセãƒ?ƒˆしまã�?æŒ?®šされた値ã�?設定されてã�?‚‹場合ã?み使用されまã�?ã€?
137 *
138 * @og.tag
139 * æŒ?®šされた値ã�?設定されてã�?‚‹場合ã?みã€?–‹始文字å?(startKey)とçµ?�¿合わせれて、使用されますã?
140 * これは、ä¸?ˆ¬にvalue値が変動する場合に、defaultVal 等に重è¤?�™るå?ã‚?
141 * 設定したくなã�??合に使用しますã?{@XXXX}æ–?—が使用できますã?
142 *
143 * @param val 値
144 */
145 public void setValue( final String val ) {
146 value = val;
147 }
148
149 /**
150 * 【TAG】å?期å?を設定しまã�?value値がNULLの場合に、この初期値が表示)ã€?
151 *
152 * @og.tag
153 * value値がNULL(æŒ?®šされなã�?の場合に、この初期値がå?として使用されますã?
154 *
155 * @param val 初期値
156 */
157 public void setDefaultVal( final String val ) {
158 defaultVal = nval( getRequestParameter( val ),defaultVal );
159 }
160
161 /**
162 * こã?オブジェクトã?æ–?—å?表現を返しますã?
163 * 基本çš?�«ãƒ?ƒ�ãƒ?‚°目çš?�«使用しますã?
164 *
165 * @return こã?クラスのæ–?—å?表現
166 */
167 @Override
168 public String toString() {
169 return org.opengion.fukurou.util.ToString.title( this.getClass().getName() )
170 .println( "VERSION" ,VERSION )
171 .println( "startKey" ,startKey )
172 .println( "value" ,value )
173 .println( "defaultVal" ,defaultVal )
174 .println( "Other..." ,getAttributes().getAttribute() )
175 .fixForm().toString() ;
176 }
177 }