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.HybsSystemException;
019 import org.opengion.hayabusa.html.TableFormatter;
020 import org.opengion.hayabusa.html.FormatterType;
021
022 import static org.opengion.fukurou.util.StringUtil.nval ;
023
024 /**
025 * ヘッãƒ??フッターã€ã?ãƒ?‚£ãƒ¼éƒ¨ã®ãƒ•ォーマットを汎用çš?«å®šç¾©ã™ã‚‹ã‚¿ã‚°ã§ã™ã?
026 *
027 * thead,tfoot,tbody ã«ä»£ã‚る表示フォーマットをカスタマイズã™ã‚‹ã¨ãã«ä½¿ç”¨ã™ã‚‹è¦ªã‚¯ãƒ©ã‚¹ã§ã™ã?
028 *
029 * @og.rev 3.5.4.0 (2003/11/25) æ–°è¦è¿½åŠ?
030 * @og.rev 3.5.4.2 (2003/12/15) カスタãƒ?‚¿ã‚°ã‚¯ãƒ©ã‚¹ã‹ã‚‰å‰Šé™¤ã—ã¾ã™ã?(abstractåŒ?
031 * @og.rev 4.0.0.0 (2006/01/31) カスタãƒ?‚¿ã‚°ã‚¯ãƒ©ã‚¹ã«å¾©æ´»ã•ã›ã¾ã™ã?(publicåŒ?
032 * @og.group ç”»é¢éƒ¨å“?
033 *
034 * @version 4.0
035 * @author Kazuhiko Hasegawa
036 * @since JDK5.0,
037 */
038 public class TFormatTag extends CommonTagSupport {
039 //* ã“ã?プãƒã‚°ãƒ©ãƒ??VERSIONæ–?—å?ã‚’è¨å®šã—ã¾ã™ã? {@value} */
040 private static final String VERSION = "5.5.0.3 (2012/03/13)" ;
041
042 private static final long serialVersionUID = 550320120313L ;
043
044 private String rowspan = "2";
045 private String noClass = "false";
046 private String usableKey = null;
047 private String usableList = "1" ;
048 private String itdBody = ""; // 3.5.6.0 (2004/06/18)
049 private boolean useTrCut = true; // 5.5.0.3 (2012/03/13 )
050
051 /**
052 * Taglibã®é–‹å§‹ã‚¿ã‚°ãŒè¦‹ã¤ã‹ã£ãŸã¨ãã«å‡¦ç?™ã‚?doStartTag() ã‚?オーãƒã?ライドã—ã¾ã™ã?
053 *
054 * @og.rev 5.2.2.0 (2010/11/01) caseKey ã€caseVal 属æ?対å¿?
055 *
056 * @return 後続å?ç??æŒ?¤º( EVAL_BODY_BUFFERED )
057 */
058 @Override
059 public int doStartTag() {
060 // 5.2.2.0 (2010/11/01) caseKey ã€caseVal 属æ?対å¿?
061 if( useTag() ) {
062 return( EVAL_BODY_BUFFERED ); // Body を評価ã™ã‚‹ã€? extends BodyTagSupport æ™?
063 }
064 return ( SKIP_BODY ); // Body を評価ã—ãªã?
065 }
066
067 /**
068 * Taglibã®çµ‚äº?‚¿ã‚°ãŒè¦‹ã¤ã‹ã£ãŸã¨ãã«å‡¦ç?™ã‚?doEndTag() ã‚?オーãƒã?ライドã—ã¾ã™ã?
069 *
070 * @og.rev 3.5.6.0 (2004/06/18) setItdBody メソãƒ?ƒ‰ã«ã‚ˆã‚‹ itdBody ã®ç™»éŒ²å‡¦ç?¿½åŠ?
071 * @og.rev 5.1.7.0 (2010/06/01) フォーマットã?{@XXXX}ã®å€¤ã«[ãŒå«ã¾ã‚Œã‚‹å ´åˆã?ã€ã‚µã‚¤ãƒ‹ã‚¿ã‚¤ã‚º("\\]\\"ã«å¤‰æ›)ã™ã‚‹ã€?
072 * @og.rev 5.2.2.0 (2010/11/01) caseKey ã€caseVal 属æ?対å¿?
073 *
074 * @return 後続å?ç??æŒ?¤º(EVAL_PAGE)
075 */
076 @Override
077 public int doEndTag() {
078 debugPrint(); // 4.0.0 (2005/02/28)
079 // 5.2.2.0 (2010/11/01) caseKey ã€caseVal 属æ?対å¿?
080 if( useTag() ) {
081 ViewFormTag viewform = (ViewFormTag)findAncestorWithClass( this,ViewFormTag.class );
082 if( viewform == null ) {
083 String errMsg = "<b>ã“ã?ã‚¿ã‚°ã¯ã€ViewFormTagã®å†??(è¦ç´?ã«è¨˜è¿°ã—ã¦ãã ã•ã„ã€?/b>";
084 throw new HybsSystemException( errMsg );
085 }
086 // 5.1.7.0 (2010/06/01) フォーマットã?{@XXXX}ã®å€¤ã«[ãŒå«ã¾ã‚Œã‚‹å ´åˆã?ã€ã‚µã‚¤ãƒ‹ã‚¿ã‚¤ã‚º("\\]\\"ã«å¤‰æ›)ã™ã‚‹ã€?
087 // String bodyFormat = getBodyString();
088 String bodyFormat = getSanitizedBodyString();
089
090 TableFormatter format = new TableFormatter();
091 format.setFormatType( getType() );
092 // format.setFormat( bodyFormat );
093 format.setFormat( bodyFormat, useTrCut ); // 5.5.0.3 (2012/03/13)
094 format.setRowspan( rowspan );
095 format.setNoClass( noClass );
096 format.setUsableKey( usableKey );
097 format.setUsableList( usableList );
098 format.setItdBody( itdBody ); // 3.5.6.0 (2004/06/18)
099 viewform.addFormatter( format );
100 }
101 return(EVAL_PAGE); // ペã?ã‚¸ã®æ®‹ã‚Šã‚’評価ã™ã‚‹ã€?
102 }
103
104 /**
105 * タグリブオブジェクトをリリースã—ã¾ã™ã?
106 * ã‚ャãƒ?‚·ãƒ¥ã•れã¦å†åˆ©ç”¨ã•れるã?ã§ã€ãƒ•ィールドã?åˆæœŸè¨å®šã‚’行ã„ã¾ã™ã?
107 *
108 * @og.rev 3.5.6.0 (2004/06/18) itdBody 属æ?ã®è¿½åŠ?
109 *
110 */
111 @Override
112 protected void release2() {
113 super.release2();
114 rowspan = "2";
115 noClass = "false";
116 usableKey = null;
117 usableList = "1" ;
118 itdBody = ""; // 3.5.6.0 (2004/06/18)
119 }
120
121 /**
122 * ã€TAG】表示ãƒ??タを作æ?ã™ã‚‹å ´åˆã?フォーマットã?行数(rowspan)ã‚’ã‚»ãƒ?ƒˆã—ã¾ã?åˆæœŸå€¤:2)ã€?
123 *
124 * @og.tag
125 * 表示ãƒ??タを作æ?ã™ã‚‹å ´åˆã?フォーマットã?行数をセãƒ?ƒˆã—ã¾ã™ã?
126 * 上ä½ã? viewFormタグよりã€ã“ã¡ã‚‰ãŒå„ªå…ˆã•れã¾ã™ã?
127 *
128 * @param span フォーマットã?行数
129 */
130 public void setRowspan( final String span ) {
131 rowspan = span;
132 }
133
134 /**
135 * ã€TAG】カラãƒ??クラスå?VERCHAR2,NUMBER ãªã©)を使用ã™ã‚‹ã‹ã©ã?‹[true/false]を指定ã—ã¾ã?åˆæœŸå€¤:false)ã€?
136 *
137 * @og.tag
138 * "true" ã§ã€ã‚¯ãƒ©ã‚¹å±žæ?ã‚’è¨å®šã—ã¾ã›ã‚“。ã“れã?ã€?¼£?³?³ãƒ•ã‚¡ã‚¤ãƒ«ã«æ›¸ã‹ã‚Œã¦ã?‚‹å±žæ?ã‚?
139 * 使用ã—ãªã?“ã¨ã‚’æ„味ã—ã¾ã™ã?
140 * åˆæœŸå€¤ã¯ã€?false" ã§ã™ã?
141 *
142 * @param flag クラスåä½¿ç”¨ã®æœ‰ç„¡(true:使用ã—ãªã?false:使用ã™ã‚‹ã€?
143 */
144 public void setNoClass( final String flag ) {
145 this.noClass = flag;
146 }
147
148 /**
149 * ã“ã?フォーマットã?タイプを返ã—ã¾ã™ã?
150 *
151 * タイプã?ã€?head/body/foot" ã®ä¸ã‹ã‚‰ã€æŒ‡å®šã—ã¾ã™ã?
152 *
153 * @og.rev 3.5.5.8 (2004/05/20) abstract ã—ã¾ã™ã?
154 *
155 * @return ã“ã?フォーマットã?タイプを返ã—ã¾ã™ã?
156 */
157 protected FormatterType getType() {
158 String errMsg = "ã“ã?メソãƒ?ƒ‰ã¯ã€THead/TBody/TFoot ã®å?‚µãƒ–クラスã§å®Ÿè£?—ã¦ãã ã•ã„ã€?;
159 throw new UnsupportedOperationException( errMsg );
160 }
161
162 // protected String getType() {
163 // String errMsg = "ã“ã?メソãƒ?ƒ‰ã¯ã€THead/TBody/TFoot ã®å?‚µãƒ–クラスã§å®Ÿè£?—ã¦ãã ã•ã„ã€?;
164 // throw new UnsupportedOperationException( errMsg );
165 // }
166
167 /**
168 * ã€TAG】フォーマットã?使用å¯å¦ã‚’判æ–ã™ã‚‹ã‚ーã¨ãªã‚‹ã‚«ãƒ©ãƒ?を指定ã—ã¾ã™ã?
169 *
170 * @og.tag
171 * ã‚ーãŒã?usableList ã«å«ã¾ã‚Œã‚‹å ´åˆã?ã€ã“ã®ãƒ•ォーãƒ?‚’使用ã§ãã¾ã™ã?
172 * ã‚ー(カラãƒ?)ãŒæŒ‡å®šã•れãªã??åˆã?ã€å¸¸ã«ä½¿ç”¨ã•れã¾ã™ã?
173 * ※ ç¾æ™‚点ã§ã¯ã€BODYタイプã?ã¿ä½¿ç”¨ã—ã¦ã?¾ã™ã?
174 *
175 * @param key フォーマットã?使用å¯å¦ã‚’判æ–ã™ã‚‹ã‚«ãƒ©ãƒ?
176 */
177 public void setUsableKey( final String key ) {
178 usableKey = key;
179 }
180
181 /**
182 * ã€TAG】フォーマットã?使用å¯å¦ã‚’判æ–ã™ã‚‹æ–?—å?リストをæŒ?®šã—ã¾ã?åˆæœŸå€¤:"1")ã€?
183 *
184 * @og.tag
185 * ã‚ーãŒã?ã“ã?æ–?—å?リストä¸ã«å˜åœ¨ã™ã‚‹å ´åˆã?ã€ã“ã®ãƒ•ォーãƒ?‚’使用ã§ãã¾ã™ã?
186 * ã“ã?æ–?—å?リストã?ã€å›ºå®šãªæ–?—å?ã§ã™ã?{@XXXX}ã¯ä½¿ç”¨ã§ãã¾ã™ãŒã€[XXXX]ã¯
187 * 使用ã§ãã¾ã›ã‚“ã€?
188 * åˆæœŸå€¤ã¯ã€?1" ã§ã™ã?
189 * ※ ç¾æ™‚点ã§ã¯ã€BODYタイプã?ã¿ä½¿ç”¨ã—ã¦ã?¾ã™ã?
190 *
191 * @param list フォーマットã?使用å¯å¦ã‚’判æ–ã™ã‚‹æ–?—å?リスãƒ?
192 */
193 public void setUsableList( final String list ) {
194 usableList = nval( getRequestParameter(list),usableList );
195 }
196
197 /**
198 * itdフォーマット文å—å?ã‚’è¨å®šã—ã¾ã™ã?
199 *
200 * itd ãƒœãƒ‡ã‚£éƒ¨ã®æ–?—å?を指定ã—ã¾ã™ã?
201 * itd ボディã¯ã€ç¹°ã‚Šè¿”ã—処ç?‚’行ã„ã¾ã™ã?ã“れをã?上ä½ã?ボディæ–?—å?ã®ä¸ã®
202 * HYBS_ITD_MARKER æ–?—å? ã¨ç½®ãæ›ãˆã¾ã™ã?
203 *
204 * @og.rev 3.5.6.0 (2004/06/18) itdフォーマット文å—å?ã®å–り込ã¿
205 *
206 * @param itd itdフォーマットã?æ–?—å?
207 */
208 public void setItdBody( final String itd ) {
209 if( itd != null ) {
210 itdBody = itd;
211 }
212 }
213
214 /**
215 * ã€TAGã€?å…ˆé?trタグを削除ã™ã‚‹ã‹ã©ã?‹[true/false]を指定ã—ã¾ã?åˆæœŸå€¤:true)ã€?
216 *
217 * @og.tag
218 * フォーマットã?å…ˆé?ãŒtrã‚¿ã‚°ã®å ´åˆã?削除ã™ã‚‹å‡¦ç?Œã‚りã¾ã™ãŒã€?
219 * CustomDataã®ã‚ˆã†ãªå ´åˆã§ã¯å‰Šé™¤ã—ãŸãã‚りã¾ã›ã‚“ã€?
220 * falseを指定ã™ã‚‹ã¨å‰Šé™¤å‡¦ç?‚’行ã‚ãªã?‚ˆã?«ãªã‚Šã¾ã™ã?
221 *
222 * @og.rev 5.5.0.3 (2012/03/13) æ–°è¦è¿½åŠ?
223 *
224 * @param useFlg æƒ??出力をæŒ?®?[true:有効/false:無効]
225 */
226 public void setUseTrCut( final String useFlg ) {
227 useTrCut = nval( getRequestParameter( useFlg ),useTrCut );
228 }
229
230 /**
231 * ã“ã?オブジェクトã?æ–?—å?表ç¾ã‚’è¿”ã—ã¾ã™ã?
232 * 基本çš?«ãƒ?ƒãƒ?‚°ç›®çš?«ä½¿ç”¨ã—ã¾ã™ã?
233 *
234 * @return ã“ã?ã‚¯ãƒ©ã‚¹ã®æ–?—å?表ç¾
235 */
236 @Override
237 public String toString() {
238 return org.opengion.fukurou.util.ToString.title( this.getClass().getName() )
239 // .println( "VERSION" ,VERSION )
240 .println( "rowspan" ,rowspan )
241 .println( "noClass" ,noClass )
242 .println( "usableKey" ,usableKey )
243 .println( "usableList" ,usableList )
244 .println( "itdBody" ,itdBody )
245 .println( "Other..." ,getAttributes().getAttribute() )
246 .fixForm().toString() ;
247 }
248 }