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 }