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