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.fukurou.util.XHTMLTag;
020
021 import static org.opengion.fukurou.util.StringUtil.nval ;
022
023 /**
024 * ラジオボタンで表示é ?Order By 句)を指定するタグですã?
025 *
026 * name 属æ?値はã€?"ORDER_BY" 固定ですã?
027 * columns 属æ?は、カンマ区åˆ?‚Šのカラãƒ?±žæ?を設定しますã?
028 * ロケールは、ユーザーæƒ??の lang 属æ?をå?期å?で使用しã? セãƒ?ƒˆされてã�?�ªã�??合ã?ã€?
029 * リクエスト情報のロケールから取得しますã?
030 *
031 * @og.formSample
032 * ●形式ï¼?lt;og:orderBy columns="…" />
033 * ●body?šなã�?
034 *
035 * ●Tag定義??
036 * <og:orderBy
037 * columns ○ã?TAG】表示é ?¯¾象のカラãƒ?‚’CSV形式でè¤?•°æŒ?®šしまã�?å¿??)ã€?
038 * checked 【TAG】å?めからチェãƒ?‚¯された状æ…?checked)で表示しまã�?
039 * lbls 【TAG】ラベルをCSV形式でè¤?•°æŒ?®šしまã�?
040 * checkedValue 【TAG】å?めからチェãƒ?‚¯された状態にする値を指定しまã�?
041 * caseKey 【TAG】このタグ自体を利用するかどã�?�‹の条件キーを指定しまã�?初期値:null)
042 * caseVal 【TAG】このタグ自体を利用するかどã�?�‹の条件値を指定しまã�?初期値:null)
043 * caseNN 【TAG】指定ã?値がã?null/ゼロæ–?—å? でなã�??å�?Not Null=NN)は、このタグは使用されまã�?初期値:true)
044 * caseNull 【TAG】指定ã?値がã?null/ゼロæ–?—å? の場合ã?、このタグは使用されまã�?初期値:true)
045 * debug 【TAG】デバッグæƒ??をå?力するかどã�?�‹[true/false]を指定しまã�?初期値:false)
046 * />
047 *
048 * ●使用ä¾?
049 * <og:orderBy columns="PN,YOBI" checked="checked" />
050 * <og:orderBy columns="YOBI,PN" />
051 * <og:orderBy columns="MKNM,YOBI" />
052 *
053 * @og.rev 3.1.4.0 (2003/04/18) 継承å…?‚’、CommonTagSupport に変更ã€?
054 * @og.group 画面部å“?
055 *
056 * @version 4.0
057 * @author Kazuhiko Hasegawa
058 * @since JDK5.0,
059 */
060 public class OrderByTag extends CommonTagSupport {
061 //* こã?プログラãƒ??VERSIONæ–?—å?を設定しますã? {@value} */
062 private static final String VERSION = "5.2.2.0 (2010/11/01)" ;
063
064 private static final long serialVersionUID = 522020101101L ;
065
066 private String columns = null;
067 private String labels = null;
068 private String checked = null;
069 private String checkedValue = null;
070
071 /**
072 * Taglibの終äº?‚¿グが見つかったときに処ç�?�™ã‚?doEndTag() ã‚?オーバã?ライドしますã?
073 *
074 * @og.rev 3.1.4.1 (2003/04/21) HTMLTagSupport の継承をå»?¢した為、doEndTag() を追åŠ??
075 * @og.rev 5.2.2.0 (2010/11/01) caseKey 、caseVal 属æ?対å¿?
076 *
077 * @return 後続å?ç�??æŒ?¤º
078 */
079 @Override
080 public int doEndTag() {
081 debugPrint(); // 4.0.0 (2005/02/28)
082 // 5.2.2.0 (2010/11/01) caseKey 、caseVal 属æ?対å¿?
083 if( useTag() ) {
084 jspPrint( makeTag() );
085 }
086 return(EVAL_PAGE);
087 }
088
089 /**
090 * タグリブオブジェクトをリリースしますã?
091 * キャãƒ?‚·ュされて再利用されるã?で、フィールドã?初期設定を行いますã?
092 *
093 * @og.rev 2.0.0.4 (2002/09/27) カスタãƒ?‚¿グの release() メソãƒ?ƒ‰をã?追åŠ?
094 * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応ã?release2() ã‚?doEndTag()で呼ぶã€?
095 *
096 */
097 @Override
098 protected void release2() {
099 super.release2();
100 columns = null;
101 labels = null;
102 checked = null;
103 checkedValue = null;
104 }
105
106 /**
107 * 検索条件の入力用のãƒ?‚ストフィールドを作æ?しますã?
108 *
109 * ãƒ??ブルタグによりフィールドã?åˆ?‰²されますã?
110 * 使用時ã?、テーブルタグを前後に使用して下さã�??
111 *
112 * @og.rev 3.1.1.0 (2003/03/28) radio ボタン等で、ラベルをクリãƒ?‚¯してもå?をセãƒ?ƒˆできるようにするã€?
113 *
114 * @return 入力用のãƒ?‚ストフィールドタグ
115 */
116 protected String makeTag() {
117 set( "type","radio" );
118 set( "name","ORDER_BY" );
119 set( "value",columns );
120 if( labels == null ) { setLbls( columns ); }
121 String lbls = getMsglbl();
122
123 if( checkedValue != null && checkedValue.length() > 0 ) {
124 if( checkedValue.equals( columns ) ) {
125 set( "checked","checked" );
126 }
127 }
128 else {
129 set( "checked",checked );
130 }
131
132 if( get( "id" ) == null ) { set( "id",TaglibUtil.getTagId() ); }
133
134 StringBuilder rtn = new StringBuilder( HybsSystem.BUFFER_MIDDLE );
135
136 rtn.append( "<td>" );
137 rtn.append( XHTMLTag.input( getAttributes() ) );
138 rtn.append( "</td>" );
139 rtn.append( "<td>" );
140 rtn.append( "<label for=\"" );
141 rtn.append( get( "id" ) );
142 rtn.append( "\">" );
143 rtn.append( lbls );
144 rtn.append( "</label>" );
145 rtn.append( "</td>" );
146
147 return rtn.toString() ;
148 }
149
150 /**
151 * 【TAG】表示é ?¯¾象のカラãƒ?‚’CSV形式でè¤?•°æŒ?®šしますã?
152 *
153 * @og.tag 表示é ?¯¾象のカラãƒ?‚’æŒ?®šしますã?
154 *
155 * @param columns カラãƒ?CSV形å¼?
156 */
157 public void setColumns( final String columns ) {
158 this.columns = getRequestParameter( columns );
159 }
160
161 /**
162 * 【TAG】å?めからチェãƒ?‚¯された状æ…?checked)で表示しますã?
163 *
164 * @og.tag
165 * check 値ã�?"checked" の場合ã?み、実行されますã?
166 *
167 * @param ch "checked" 値
168 */
169 public void setChecked( final String ch ) {
170 checked = getRequestParameter( ch );
171 if( "checked".equals( checked )) {
172 checked = "checked";
173 }
174 else {
175 checked = null;
176 }
177 }
178
179 /**
180 * 【TAG】å?めからチェãƒ?‚¯された状態にする値を指定しますã?
181 *
182 * @og.tag
183 * チェãƒ?‚¯バリューがã?自åˆ??身のカラãƒ?��と同じであれば、チェãƒ?‚¯がつきますã?
184 * 通常、checkedValue = "{@ORDER_BY}" で、è?動的にチェãƒ?‚¯されますã?
185 *
186 * @param ch チェãƒ?‚¯された状態にする値
187 */
188 public void setCheckedValue( final String ch ) {
189 checkedValue = nval( getRequestParameter( ch ),checkedValue );
190 }
191
192 /**
193 * 【TAG】ラベルをCSV形式でè¤?•°æŒ?®šしますã?
194 *
195 * @og.tag
196 * ラベル(è¤?•°)を変更するときに、lbls属æ?を使ã�?�¾すã?
197 *
198 * シングルラベルの lbl 属æ?との違いは,ここではラベルをè¤?•° カンマ区åˆ?‚Šで
199 * 渡すことが可能であることですã?これによりã€?A,B,C" とã�?�†値に対してã€?
200 * "Aのラベル表示,Bのラベル表示,Cのラベル表示" とã�?�†具合にæ–?—å?ã‚?
201 * 再合成しますã?
202 * これは、SQLæ–??Order By 句で、ソートé?を指定するå?合などに便利ですã?
203 *
204 * @og.rev 3.5.6.2 (2004/07/05) 先に配å?にåˆ?§£してからリクエスト変数の値を取å¾?
205 * @og.rev 5.2.2.0 (2010/11/01) setMsglbl å»?¢ â‡?setLbl に置換え
206 *
207 * @param lbls è¤?•°ラベルID(カンマ区åˆ?‚Š)
208 */
209 public void setLbls( final String lbls ) {
210 labels = getRequestParameter( lbls ) ;
211
212 String[] array = getCSVParameter( lbls );
213
214 StringBuilder buf = new StringBuilder( HybsSystem.BUFFER_MIDDLE );
215 buf.append( getLabel( array[0] ) );
216 for( int i=1; i<array.length; i++ ) {
217 buf.append( "," );
218 buf.append( getLabel( array[i] ) );
219 }
220 // setMsglbl( buf.toString() );
221 setLbl( buf.toString() ); // 5.2.2.0 (2010/11/01) setMsglbl å»?¢ â‡?setLbl に置換え
222 }
223
224 /**
225 * こã?オブジェクトã?æ–?—å?表現を返しますã?
226 * 基本çš?�«ãƒ?ƒ�ãƒ?‚°目çš?�«使用しますã?
227 *
228 * @return こã?クラスのæ–?—å?表現
229 */
230 @Override
231 public String toString() {
232 return org.opengion.fukurou.util.ToString.title( this.getClass().getName() )
233 .println( "VERSION" ,VERSION )
234 .println( "columns" ,columns )
235 .println( "labels" ,labels )
236 .println( "checked" ,checked )
237 .println( "checkedValue" ,checkedValue )
238 .println( "Other..." ,getAttributes().getAttribute() )
239 .fixForm().toString() ;
240 }
241 }