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