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.html; 017 018 import org.opengion.hayabusa.common.HybsSystem; 019 import org.opengion.hayabusa.common.HybsSystemException; 020 import org.opengion.hayabusa.db.DBTableModel; 021 import org.opengion.fukurou.util.StringUtil; 022 import org.opengion.fukurou.model.Formatter; 023 024 import java.util.regex.Pattern; 025 import java.util.regex.Matcher; 026 027 /** 028 * [PN],[OYA] ãªã©ã® [] ã§æŒ?®šã•れãŸã‚«ãƒ©ãƒ?§è¡¨ã•れãŸãƒ•ォーマットデータã«å¯¾ã—ã¦ã€? 029 * DBTableModelオブジェクトをé©ç”¨ã—㦠å?‚«ãƒ©ãƒ?«å®Ÿãƒ‡ãƒ¼ã‚¿ã‚’割り当ã¦ã‚‹ã‚ªãƒ–ジェクトã§ã™ã? 030 * 031 * 特ã«ã€[XXXX]ã«å¯¾ã—ã¦ã€[#XXXX]ã€[$XXXX]ã€[$XXXX]ãªã©ã®ç‰¹æ®Šè¨˜å·ãŒä½¿ç”¨ã§ãã¾ã™ã? 032 * 特殊記å·ã®è§£é‡ˆã?ã€HTMLFormatTextFieldç³»ã¨HTMLFormatTableç³»ã§ç•°ãªã‚Šã¾ã™ã?ã§ 033 * ã”æ³¨æ„ãã?•ã?? 034 * 035 * @og.rev 3.5.4.0 (2003/11/25) æ–°è¦è¿½åŠ? 036 * @og.group ç”»é¢è¡¨ç¤º 037 * 038 * @version 4.0 039 * @author Kazuhiko Hasegawa 040 * @since JDK5.0, 041 */ 042 public class TableFormatter { 043 044 /** フォーマットタイプã?æŒ?®šã?特殊ãªãƒžã?ク {@value} */ 045 public static final String HYBS_ITD_MARKER = "h_itd_marker"; 046 private static final Pattern ptnKey = Pattern.compile( "[ \t]+</td" ); // 4.3.2.0 (2008/09/10) 047 048 private FormatterType formatType = null; 049 private int[] location = null; 050 private String[] format = null; 051 private String formatTag = null; 052 private String rowspan = " rowspan=\"2\""; 053 private String trTag = null; 054 private boolean noClass = false; 055 // 3.5.6.0 (2004/06/18) '!' 値ã®ã¿ 追åŠ?æ—¢å˜ã? '$' ã¯ã€ãƒ¬ãƒ³ãƒ?ƒ©ãƒ¼ 056 private char[] type = null; // '#':ラベルã®ã¿ '$':レンãƒ?ƒ©ãƒ¼ '!':値ã®ã¿ ãã?ä»?通常 057 private String usableKey = null; // ã‚ーæƒ??ã®ã‚«ãƒ©ãƒ?–‡å—å? 058 private int usableKeyNo = -1; // ã‚ーæƒ??ã®ã‚«ãƒ©ãƒ?•ªå· 059 private String usableList = "1" ; 060 061 private String keyBreakClm = null; // 5.7.6.3 (2014/05/23) ã‚ーブレイクをãƒã‚§ãƒ?‚¯ã™ã‚‹ã‚«ãƒ©ãƒ?D 062 private int breakClmNo = -1; // 5.7.6.3 (2014/05/23) ã‚ーブレイクカラãƒ?•ªå· 063 private String breakVal = null; // 5.7.6.3 (2014/05/23) ã‚ーブレイクをãƒã‚§ãƒ?‚¯ã™ã‚‹å€¤ 064 065 private String itdBody = ""; // 3.5.6.0 (2004/06/18) 追åŠ? 066 private Formatter formatter = null; 067 068 /** 069 * フォーマットをセãƒ?ƒˆã—ã¾ã™ã? 070 * フォーマットã«ã€?lt;table>ã‚’å«ã‚??åˆã?TextField扱ã?ªã®ã§ã€ãƒ•ォーマットå?割 071 * ã—ã¾ã›ã‚“。table ã‚’å«ã¾ãšã?tr ã‚’å«ã‚??åˆã?ã€?¼‘行å?ã®ãƒ??ã‚¿ã¨ã—ã¦æ‰±ã?‚ºã€? 072 * trTag を求ã‚ã¾ã™ã? 073 * trTag 㨠format ã¨ã®é–“ã«ã€è¡Œã?ãƒ?ƒ€ãƒ¼ãŒå?りã¾ã™ã? 074 * Tomcat6ã§ã¯ã€JSPã®ãƒ‘ã?ス時ã«ã€tabã‚„spaceã¯ãã?ã¾ã¾ãƒ‘ã?スã•れるãŸã‚ã?</td>å‰? 075 * ã®ã‚¹ãƒšã?ス削除処ç?‚‚行ã„ã¾ã™ã? 076 * 077 * @og.rev 4.3.2.0 (2008/09/10) </td>å‰ã?スペã?スをå–り消ã—ã¾ã™ã? 078 * @og.rev 5.5.0.3 (2012/03/13) <tr>ã‚’å–らãªã?ƒ•ラグ追åŠ? 079 * 080 * @param fmt [カラãƒ?] å½¢å¼ã?フォーマットデータ 081 * @param flg falseã«ã™ã‚‹ã¨å…ˆé?ã®trã‚¿ã‚°ã‚’å–ã‚‹å?ç?‚’行ã„ã¾ã›ã‚“(5.5.0.3) 082 */ 083 public void setFormat( final String fmt , final boolean flg ) { 084 int tbl = fmt.indexOf( "<table" ); 085 int str = fmt.indexOf( "<tr" ); 086 087 // tr ã‚’å«ã¿ã€ã‹ã¤ã€tableã‚’å«ã¾ãªã?‹ã€å«ã‚“ã§ã‚?tr ã®å¾Œã‚ã«tableãŒã‚ã‚‹å?åˆã? 088 if( str >= 0 && ( tbl < 0 || str < tbl ) && flg ) { // 5.5.0.3(2012/03/13) 089 int end = fmt.indexOf( '>',str ); 090 formatTag = fmt.substring(end+1); 091 trTag = fmt.substring(0,end+1) ; 092 } 093 else { 094 formatTag = fmt; 095 trTag = null; 096 } 097 // 4.3.2.0 (2008/09/10) </td>å‰ã?スペã?スをå–り消ã™ã€? 098 Matcher matcher = ptnKey.matcher( formatTag ); 099 formatTag = matcher.replaceAll( "</td" ); 100 101 } 102 103 /** 104 * フォーマットをセãƒ?ƒˆã—ã¾ã™ã? 105 * フォーマットã«ã€?lt;table>ã‚’å«ã‚??åˆã?TextField扱ã?ªã®ã§ã€ãƒ•ォーマットå?割 106 * ã—ã¾ã›ã‚“。table ã‚’å«ã¾ãšã?tr ã‚’å«ã‚??åˆã?ã€?¼‘行å?ã®ãƒ??ã‚¿ã¨ã—ã¦æ‰±ã?‚ºã€? 107 * trTag を求ã‚ã¾ã™ã? 108 * trTag 㨠format ã¨ã®é–“ã«ã€è¡Œã?ãƒ?ƒ€ãƒ¼ãŒå?りã¾ã™ã? 109 * Tomcat6ã§ã¯ã€JSPã®ãƒ‘ã?ス時ã«ã€tabã‚„spaceã¯ãã?ã¾ã¾ãƒ‘ã?スã•れるãŸã‚ã?</td>å‰? 110 * ã®ã‚¹ãƒšã?ス削除処ç?‚‚行ã„ã¾ã™ã? 111 * 112 * @og.rev 5.5.0.3 (2012/03/13) 引数追åŠ?«ã¤ãã? 113 * 114 * @param fmt [カラãƒ?] å½¢å¼ã?フォーマットデータ 115 */ 116 public void setFormat( final String fmt ) { 117 setFormat( fmt , true ); 118 } 119 120 /** 121 * フォーマットをå–å¾—ã—ã¾ã™ã? 122 * 123 * @og.rev 3.5.5.8 (2004/05/20) æ–°è¦è¿½åŠ? 124 * @og.rev 5.1.7.0 (2010/06/01) サニタイズ戻ã—å?ç?"\\]\\"ã‹ã‚‰"["ã«æˆ»ã?を追åŠ? 125 * 126 * @return フォーマットデータ 127 */ 128 public String getFormat() { 129 if( trTag != null ) { 130 return decodeSanitizedStr( trTag + formatTag ); 131 } 132 else { 133 return decodeSanitizedStr( formatTag ); 134 } 135 } 136 137 /** 138 * DBTableModelを利用ã—ã¦ã€ãƒ•ォーマットデータをå?期化ã—ã¾ã™ã? 139 * 140 * @og.rev 3.5.5.0 (2004/03/12) [KEY.カラãƒ?] 機è?追åŠ? 141 * @og.rev 3.5.5.2 (2004/04/02) [I] ã§ã€è¡Œç•ªå·ã‚’作æ?ã—ã¾ã™ã? 142 * @og.rev 3.5.6.0 (2004/06/18) '!' 値ã®ã¿ 追åŠ?æ—¢å˜ã? '$' ã¯ã€ãƒ¬ãƒ³ãƒ?ƒ©ãƒ¼ 143 * @og.rev 3.6.0.0 (2004/09/17) [ROW.ID] ã§ã€è¡Œæ¯Žã?ãƒã‚§ãƒ?‚¯ãƒœãƒƒã‚¯ã‚¹ã®IDã‚’è¿”ã—ã¾ã™ã? 144 * @og.rev 5.1.7.0 (2010/06/01) サニタイズ戻ã—å?ç?"\\]\\"ã‹ã‚‰"["ã«æˆ»ã?を追åŠ? 145 * @og.rev 5.7.6.3 (2014/05/23) ã‚ーブレイクをãƒã‚§ãƒ?‚¯ã™ã‚‹ keyBreakClm 属æ?追åŠ? 146 * 147 * @param table DBTableModelオブジェクãƒ? 148 */ 149 public void makeFormat( final DBTableModel table ) { 150 formatter = new Formatter( table ); 151 formatter.setFormat( formatTag ); 152 location = formatter.getClmNos(); 153 format = formatter.getFormat(); 154 155 // 5.1.7.0 (2010/06/01) サニタイズ戻ã—å?ç?"\\]\\"ã‹ã‚‰"["ã«æˆ»ã?を追åŠ? 156 if( format != null ) { 157 for( int i=0; i<format.length; i++ ) { 158 format[i] = decodeSanitizedStr( format[i] ); 159 } 160 } 161 162 type = formatter.getType(); 163 164 // ã“ã?フォーマットを使用ã™ã‚‹ã‹ã©ã?‹ã‚’指定ã™ã‚‹åˆ¤å®šæ¡ä»¶ã®åˆæœŸè¨å®šã§ã™ã? 165 if( usableKey != null ) { 166 usableKeyNo = table.getColumnNo( usableKey ); 167 } 168 169 // 5.7.6.3 (2014/05/23) ã‚ーブレイクをãƒã‚§ãƒ?‚¯ã™ã‚‹ keyBreakClm 属æ?追åŠ? 170 if( keyBreakClm != null ) { 171 breakClmNo = table.getColumnNo( keyBreakClm ); 172 breakVal = null; // åˆæœŸåŒ–ã—ã¾ã™ã? 173 } 174 } 175 176 /** 177 * ãƒ??ブルフォーマットã?タイプをæŒ?®šã—ã¾ã™ã? 178 * enum FormatterType ã§ã€æŒ‡å®šã—ã¾ã™ã? 179 * 180 * @og.rev 4.0.0.0 (2007/05/02) enum 定義ã«å¤‰æ›´ 181 * 182 * @param ftype フォーマットã?タイãƒ? 183 */ 184 public void setFormatType( final FormatterType ftype ) { 185 formatType = ftype; 186 } 187 188 /** 189 * ã“ã?フォーマットã?タイプを返ã—ã¾ã™ã? 190 * 191 * ã“ã?フォーマットã?タイプを返ã—ã¾ã™ã? 192 * 193 * @og.rev 4.0.0.0 (2007/05/02) enum 定義ã«å¤‰æ›´ 194 * 195 * @return ã“ã?フォーマットã?タイプを返ã—ã¾ã™ã? 196 */ 197 public FormatterType getFormatType() { 198 return formatType; 199 } 200 201 /** 202 * ãƒ??ブル㮠rowspan 属æ?ã‚’ã‚»ãƒ?ƒˆã—ã¾ã™ã? 203 * rowspan ã¯ã€ã?ãƒ?ƒ€ãƒ¼éƒ¨ã®ãƒ•ォーマットã?行数ã§ã™ã?åˆæœŸå€¤ã¯ ?’è¡?ã§ã™ã? 204 * è¨å®šã?ã€?2" ãªã©ã®ã€æ•°å—部ã®ã¿ã‚’ã‚»ãƒ?ƒˆã—ã¾ã™ã? 205 * 206 * @param rowspan 属æ? 207 */ 208 public void setRowspan( final String rowspan ) { 209 if( rowspan == null || rowspan.length() == 0 || rowspan.equals( "1" ) ) { 210 this.rowspan = ""; 211 } 212 else { 213 this.rowspan = " rowspan=\"" + rowspan + "\""; 214 } 215 } 216 217 /** 218 * è¨å®šã•れ㟠rowspan ã‚’è¿”ã—ã¾ã™ã? 219 * ã“れã¯ã€ãƒ•ォーマットã?段çµ??æ•°ã‚’å–りå?ã—ã¾ã™ã? 220 * æ–?—å?ã¨ã—ã¦ã¯ã€rowspan="2" ã¨ã?†å½¢ã§å–り出ã—ã¾ã™ã? 221 * 222 * @return フォーマット文å—å? 223 */ 224 public String getRowspan() { 225 return rowspan; 226 } 227 228 /** 229 * ãƒã‚±ãƒ¼ã‚·ãƒ§ãƒ³ç•ªå·ã®ã‚µã‚¤ã‚ºã‚’è¿”ã—ã¾ã™ã? 230 * フォーãƒ?½ç½®ç•ªå·ã¯ã€? ã‹ã‚‰ getLocationSize()-1 ã¾ã§ã®æ•°å—ã‚’æŒ?®šã—ã¾ã™ã? 231 * ãƒã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã‚µã‚¤ã‚ºã¯ã€aaa[ABC]bbb[DEF]ccc[GHI]ddd ã¨ãªã£ã¦ã?‚‹å ´åˆã? 232 * aaa , bbb , ccc , ddd ã¯ã€ãƒ•ォーマットã§ã€ã‚µã‚¤ã‚ºã¯?”ã? 233 * ABC , DEF , GHI ã«å¯¾å¿œã™ã‚‹ã‚«ãƒ©ãƒ?•ªå·ãŒãƒã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã§ã€ã‚µã‚¤ã‚ºã¯?“ã? 234 * ã“ã?メソãƒ?ƒ‰ã§è¿”ã™ã®ã¯ã€ãƒã‚±ãƒ¼ã‚·ãƒ§ãƒ³ç•ªå·(??ã®æ–¹ã§ã™ã? 235 * 236 * @return ãƒã‚±ãƒ¼ã‚·ãƒ§ãƒ³ç•ªå·ã®ã‚µã‚¤ã‚º 237 */ 238 public int getLocationSize() { 239 return location.length; 240 } 241 242 /** 243 * カラãƒ??ãƒã‚±ãƒ¼ã‚·ãƒ§ãƒ³ç•ªå·ã‚’è¿”ã—ã¾ã™ã? 244 * 引数ã¯ã€? ã‹ã‚‰ã€getLocationSize()-1 ã¾ã§ã®æ•°ã§æŒ?®šã—ã¾ã™ã? 245 * æŒ?®šã?ä½ç½®ã®ã€ãƒ•ォーマットã?カラãƒ?ã«å¯¾å¿œã™ã‚‹ãƒã‚±ãƒ¼ã‚·ãƒ§ãƒ³ç•ªå· 246 * ã‚’è¿”ã—ã¾ã™ã? 247 * 248 * @param no フォーãƒ?½ç½®ç•ªå· 249 * 250 * @return ãƒã‚±ãƒ¼ã‚·ãƒ§ãƒ³ç•ªå· 251 */ 252 public int getLocation( final int no ) { 253 return location[no]; 254 } 255 256 /** 257 * フォーマット文å—å?ã‚’è¿”ã—ã¾ã™ã? 258 * 引数ã¯ã€? ã‹ã‚‰ã€getLocationSize() ã¾ã§ã®æ•°ã§æŒ?®šã—ã¾ã™ã? 259 * æŒ?®šã?フォーマットãŒã€aaa[ABC]bbb[DEF]ccc[GHI]ddd ã¨ãªã£ã¦ã?‚‹å ´åˆã? 260 * aaa , bbb , ccc , ddd を引数 0 , 1 , 2 , 3 ã§è¿”ã—ã¾ã™ã? 261 * 262 * @param no フォーãƒ?½ç½®ç•ªå· 263 * 264 * @return フォーマット文å—å? 265 */ 266 public String getFormat( final int no ) { 267 return format[no]; 268 } 269 270 /** 271 * シスãƒ?ƒ フォーマット文å—å?ã‚’è¿”ã—ã¾ã™ã? 272 * シスãƒ?ƒ フォーマット文å—å?ã¯ã€[KEY.カラãƒ?] ãªã©ã®ç‰¹æ®Šè¨˜å·ã§æŒ?®šã•れ㟠273 * カラãƒ?ã®äº‹ã§ã€location ã«ã¯ã€ã?イナスã®å€¤ãŒè¨å®šã•れã¾ã™ã? 274 * マイナスã®å€¤ã«å¿œã˜ã¦ã€å?ç?‚’変ãˆã‚‹ã“ã¨ãŒå?æ¥ã¾ã™ã? 275 * 276 * [KEY.カラãƒ?] : 行番å·ä»˜ãカラãƒ? 277 * [I] : è¡Œç•ªå· 278 * [ROW.ID] : 行毎ã?ãƒã‚§ãƒ?‚¯ãƒœãƒƒã‚¯ã‚¹ã®ID 279 * [ROW.JSON] : 行毎ã?å…¨ãƒ??ã‚¿ã®JavaScriptオブジェクト形å¼? 280 * 281 * @og.rev 3.5.5.0 (2004/03/12) [KEY.カラãƒ?] 機è?追åŠ? 282 * @og.rev 3.5.5.2 (2004/04/02) [I] ã§ã€è¡Œç•ªå·ã‚’作æ?ã—ã¾ã™ã? 283 * @og.rev 3.6.0.0 (2004/09/17) [ROW.ID] ã§ã€è¡Œæ¯Žã?ãƒã‚§ãƒ?‚¯ãƒœãƒƒã‚¯ã‚¹ã®IDã‚’è¿”ã—ã¾ã™ã? 284 * @og.rev 4.0.0.0 (2007/05/02) Formatter を使用ã™ã‚‹ã‚ˆã†ã«å¤‰æ›´ 285 * 286 * @param row è¡Œç•ªå· 287 * @param loc ä½ç½®ç•ªå· 288 * 289 * @return フォーマット文å—å? 290 */ 291 public String getSystemFormat( final int row,final int loc ) { 292 if( loc == Formatter.SYS_ROWNUM ) { 293 return String.valueOf( row ); 294 } 295 else if( loc == Formatter.SYS_JSON ) { 296 return formatter.getJson( row ); 297 } 298 299 String errMsg = "シスãƒ?ƒ フォーマットã?ã€ä¸‹è¨˜ã?å½¢å¼ã—ã‹ä½¿ç”¨ã§ãã¾ã›ã‚“ã€?" + loc + "]" + HybsSystem.CR 300 + " : [KEY.カラãƒ?] : 行番å·ä»˜ãカラãƒ?" + HybsSystem.CR 301 + " : [I] : 行番å·" + HybsSystem.CR 302 + " : [ROW.ID] : 行毎ã?ãƒã‚§ãƒ?‚¯ãƒœãƒƒã‚¯ã‚¹ã®ID" + HybsSystem.CR 303 + " : [ROW.JSON] : 行毎ã?å…¨ãƒ??ã‚¿ã®JavaScriptオブジェクト形å¼? ; 304 throw new HybsSystemException( errMsg ); 305 } 306 307 /** 308 * タイプ文å—å?ã‚’è¿”ã—ã¾ã™ã? 309 * タイプã¨ã¯ã€[XXX] ã®è¨˜è¿°ã§ã€[#XXX] ã¯ã€XXXカラãƒ??ラベルをã?[$XXX]ã¯ã€XXXカラãƒ?? 310 * レンãƒ?ƒ©ãƒ¼ã‚’ã?[!XXX} ã¯ã€å?ã®ã¿å–ã‚Šå‡ºã™æŒ‡å®šã‚’行ã„ã¾ã™ã? 311 * 主ã«ã€TextFieldç³»ã®ãƒ•ォーマットã¨Tableç³»ã§ã¯ã€æ„味åˆã„ãŒç•°ãªã‚Šã¾ã™ã?ã§ã€? 312 * ã”æ³¨æ„ãã?•ã?? 313 * 314 * @param no フォーãƒ?½ç½®ç•ªå· 315 * 316 * @return タイプ文å—å? '#':ラベルã®ã¿ '$':レンãƒ?ƒ©ãƒ¼ '!':値ã®ã¿ ãã?ä»?通常 317 */ 318 public char getType( final int no ) { 319 return type[no]; 320 } 321 322 /** 323 * è¨å®šã•れ㟠フォーマットã? trã‚¿ã‚°ã‚’è¿”ã—ã¾ã™ã? 324 * ã“れã¯ã€trã‚¿ã‚°ã«class属æ?ä»–ã?è¨å®šãŒã•れã¦ã?Ÿå ´åˆã«ã€å¤‰æ›å¾Œã? 325 * æ–?—å?ã«ã‚‚åæ˜?•ã›ã‚‹ç‚ºã«å¿?¦ã§ã™ã? 326 * 327 * @og.rev 5.1.7.0 (2010/06/01) サニタイズ戻ã—å?ç?"\\]\\"ã‹ã‚‰"["ã«æˆ»ã?を追åŠ? 328 * 329 * @return フォーマットã? trã‚¿ã‚° 330 */ 331 public String getTrTag() { 332 if( trTag == null ) { return ""; } 333 334 return decodeSanitizedStr( trTag ) ; 335 } 336 337 /** 338 * カラãƒ??クラスå?X,S9 ãªã©)ã®ã‚»ãƒ?ƒˆã‚’行ã†ã‹ã©ã?‹æŒ?®šã—ã¾ã™ã? 339 * 340 * "true" ã§ã€ã‚¯ãƒ©ã‚¹å±žæ?ã‚’è¨å®šã—ã¾ã›ã‚“。ã“れã?ã€?¼£?³?³ãƒ•ã‚¡ã‚¤ãƒ«ã«æ›¸ã‹ã‚Œã¦ã?‚‹å±žæ?ã‚? 341 * 使用ã—ãªã?“ã¨ã‚’æ„味ã—ã¾ã™ã? 342 * åˆæœŸå€¤ã¯ã€?false" ã§ã™ã? 343 * 344 * @param flag クラスåä½¿ç”¨ã®æœ‰ç„¡(true:使用ã—ãªã?false:使用ã™ã‚‹ã€? 345 */ 346 public void setNoClass( final String flag ) { 347 noClass = StringUtil.nval( flag,noClass ); 348 } 349 350 /** 351 * カラãƒ??クラスå?X,S9 ãªã©)ã®ã‚»ãƒ?ƒˆã‚’行ã†ã‹ã©ã?‹å–å¾—ã—ã¾ã™ã? 352 * 353 * "true" ã§ã€ã‚¯ãƒ©ã‚¹å±žæ?ã‚’è¨å®šã—ã¾ã›ã‚“。ã“れã?ã€?¼£?³?³ãƒ•ã‚¡ã‚¤ãƒ«ã«æ›¸ã‹ã‚Œã¦ã?‚‹å±žæ?ã‚? 354 * 使用ã—ãªã?“ã¨ã‚’æ„味ã—ã¾ã™ã? 355 * åˆæœŸå€¤ã¯ã€?false" ã§ã™ã? 356 * 357 * @return クラスåä½¿ç”¨ã®æœ‰ç„¡(true:使用ã—ãªã?false:使用ã™ã‚‹ã€? 358 */ 359 public boolean isNoClass() { 360 return noClass; 361 } 362 363 /** 364 * フォーマットã?使用å¯å¦ã‚’判æ–ã™ã‚‹ã‚ーã¨ãªã‚‹ã‚«ãƒ©ãƒ?を指定ã—ã¾ã™ã? 365 * 366 * ã‚ーãŒã?usableList ã«å«ã¾ã‚Œã‚‹å ´åˆã?ã€ã“ã®ãƒ•ォーãƒ?‚’使用ã§ãã¾ã™ã? 367 * ã‚ー(カラãƒ?)ãŒæŒ‡å®šã•れãªã??åˆã?ã€å¸¸ã«ä½¿ç”¨ã•れã¾ã™ã? 368 * ※ ç¾æ™‚点ã§ã¯ã€BODYタイプã?ã¿ä½¿ç”¨ã—ã¦ã?¾ã™ã? 369 * 370 * @param key フォーマットã?使用å¯å¦ã‚’判æ–ã™ã‚‹ã‚«ãƒ©ãƒ? 371 */ 372 public void setUsableKey( final String key ) { 373 usableKey = key; 374 } 375 376 /** 377 * フォーマットã?使用å¯å¦ã‚’判æ–ã™ã‚‹æ–?—å?リストをæŒ?®šã—ã¾ã™ã? 378 * 379 * ã‚ーãŒã?ã“ã?æ–?—å?リストä¸ã«å˜åœ¨ã™ã‚‹å ´åˆã?ã€ã“ã®ãƒ•ォーãƒ?‚’使用ã§ãã¾ã™ã? 380 * ã“ã?æ–?—å?リストã?ã€å›ºå®šãªæ–?—å?ã§ã™ã?{@XXXX}ã¯ä½¿ç”¨ã§ãã¾ã™ãŒã€[XXXX]㯠381 * 使用ã§ãã¾ã›ã‚“ã€? 382 * åˆæœŸå€¤ã¯ã€?1" ã§ã™ã? 383 * ※ ç¾æ™‚点ã§ã¯ã€BODYタイプã?ã¿ä½¿ç”¨ã—ã¦ã?¾ã™ã? 384 * 385 * @param list フォーマットã?使用å¯å¦ã‚’判æ–ã™ã‚‹æ–?—å?リスãƒ? 386 * @see TableFormatter#isUse( int,DBTableModel ) 387 */ 388 public void setUsableList( final String list ) { 389 if( list != null ) { 390 usableList = list; 391 } 392 } 393 394 /** 395 * ã“ã“ã§æŒ?®šã—ãŸã‚«ãƒ©ãƒ??値ãŒã?ã‚ーブレイクã—ãŸå ´åˆã?ã“ã?タグを使用ã—ã¾ã™ã? 396 * 397 * ã‚ーブレイク㧠使用å¯å¦ã‚’指定ã™ã‚‹ç‚ºã®æ©Ÿè?ã§ã™ã? 398 * ã“ã?è¨å®šå?ã¯ã€usableKey,usableList ã¨ã¯ã€ç‹¬ç«‹ã—ã¦ã?‚‹ãŸã‚ã€ãれãžã‚Œã§ 399 * 有効ã«ãªã‚Œã?ã€ä½¿ç”¨ã•れるã¨åˆ¤æ–ã•れã¾ã™ã? 400 * ã‚ーブレイク判定ã§ã¯ã€æœ€åˆã?1ä»¶ç›®ã¯ã€å¿?šä½¿ç”¨ã•れるã¨åˆ¤æ–ã•れã¾ã™ã? 401 * 402 * @og.rev 5.7.6.3 (2014/05/23) æ–°è¦è¿½åŠ? 403 * 404 * @param kclm ã‚ーブレイクをãƒã‚§ãƒ?‚¯ã™ã‚‹ã‚«ãƒ©ãƒ?D 405 */ 406 public void setKeyBreakClm( final String kclm ) { 407 keyBreakClm = kclm; 408 } 409 410 /** 411 * ã“ã?フォーマットを使用ã™ã‚‹ã‹ã©ã?‹ã®å•ã„åˆã‚ã›ã‚’è¿”ã—ã¾ã™ã? 412 * 413 * "true" ã§ã€ä½¿ç”¨ã—ã¾ã™ã?setUsableKey( String ) ã§ã€æŒ‡å®šã•れ㟠414 * カラãƒ?ã®å€¤ãŒã?setUsableList( String ) ã§æŒ?®šã•ã‚ŒãŸæ–?—å?ã«å«ã¾ã‚Œã¦ã?‚Œã°ã€? 415 * 使用ã—ã¾ã™ã?カラãƒ?ãŒã‚»ãƒ?ƒˆã•れãªã??åˆã?ã€ãƒ‡ãƒ•ォルトå?("true")ãŒä½¿ç”¨ã•れã¾ã™ã? 416 * ※ ç¾æ™‚点ã§ã¯ã€BODYタイプã?ã¿ä½¿ç”¨ã—ã¦ã?¾ã™ã? 417 * カラãƒ??ãƒ??ã‚¿ã«ã€ä¸æ£ãªã‚¹ãƒšã?スãŒå?ã‚‹å?åˆã‚’想定ã—ã¦ã€trim() ã—ã¦ã?¾ã™ã? 418 * よã£ã¦ã€usableList ã®å€¤ã«ã‚¹ãƒšã?スã¯ä½¿ç”¨ã§ãã¾ã›ã‚“ã€? 419 * 420 * 5.7.6.3 (2014/05/23) 以é™ã?ã€keyBreakClm ã«ã‚ˆã‚‹ã‚ーブレイクãƒã‚§ãƒ?‚¯ã‚‚追åŠ?•れã¾ã—ãŸã€? 421 * 従æ¥ã® usableKey,usableList ã¨ã¯ã€ç‹¬ç«‹ã—ã¦ã?‚‹ãŸã‚ã€ãれãžã‚Œã§æœ‰åйã«ãªã‚Œã?ã€? 422 * 使用ã•れるã¨åˆ¤æ–ã•れã¾ã™ã? 423 * 424 * @og.rev 3.5.6.2 (2004/07/05) 判定評価用カラãƒ??値ã‚?trim() ã—ã¾ã™ã? 425 * @og.rev 5.7.6.3 (2014/05/23) ã‚ーブレイクをãƒã‚§ãƒ?‚¯ã™ã‚‹ keyBreakClm 属æ?追åŠ? 426 * 427 * @param row è¡Œç•ªå· 428 * @param table DBTableModelオブジェクãƒ? 429 * 430 * @return ã“ã?フォーãƒ?‚’使用ã™ã‚‹ã‹ã©ã?‹(true:使用ã™ã‚‹/false:使用ã—ãªã? 431 * @see TableFormatter#setUsableKey( String ) 432 * @see TableFormatter#setUsableList( String ) 433 */ 434 public boolean isUse( final int row, final DBTableModel table ) { 435 // 5.7.6.3 (2014/05/23) keyBreakClm 属æ?ã®è¿½åŠ?§ã€å?ç?ƒã‚¸ãƒ?‚¯ã®è¦‹ç›´ã? 436 // if( usableKeyNo < 0 ) { return true; } 437 // String val = table.getValue( row,usableKeyNo ).trim(); 438 // return val.length() == 0 ? false : usableList.indexOf( val ) >= 0 ; 439 440 // ã©ã¡ã‚‰ã‚‚è¨å®šã•れã¦ã?ªã‘れã°ã€ä½¿ç”¨ã•れã‚?=true) 441 if( usableKeyNo < 0 && breakClmNo < 0 ) { return true; } 442 443 // 以下ã?ã©ã¡ã‚‰ã‹ã¯è¨å®šã•れã¦ã?‚‹ãŸã‚ã€true ã®æ™‚点ã§ã€ä½¿ç”¨ã•れã‚?=true)ã‚’è¿”ã™ã€? 444 if( usableKeyNo >= 0 ) { 445 String val = table.getValue( row,usableKeyNo ).trim(); 446 if( usableList.indexOf( val ) >= 0 ) { return true; } 447 } 448 449 if( breakClmNo >= 0 ) { 450 String val = table.getValue( row,breakClmNo ).trim(); 451 if( !val.equals( breakVal ) ) { // åŒã˜ã§ãªã??åˆã?ã€true 452 breakVal = val; 453 return true; 454 } 455 } 456 457 return false ; // æœ?¾Œã¾ã§æ®‹ã‚‹ã¨ã€ä½¿ç”¨ã•れãªã?¨åˆ¤æ–ã€false ã‚’è¿”ã™ã€? 458 } 459 460 /** 461 * itdフォーマット文å—å?ã‚’è¨å®šã—ã¾ã™ã? 462 * 463 * itd ãƒœãƒ‡ã‚£éƒ¨ã®æ–?—å?を指定ã—ã¾ã™ã? 464 * itd ボディã¯ã€ç¹°ã‚Šè¿”ã—処ç?‚’行ã„ã¾ã™ã?ã“れをã?上ä½ã?ボディæ–?—å?ã®ä¸ã® 465 * HYBS_ITD_MARKER æ–?—å? ã¨ç½®ãæ›ãˆã¾ã™ã? 466 * 467 * @og.rev 3.5.6.0 (2004/06/18) itdフォーマット文å—å?ã®å–り込㿠468 * 469 * @param itd itdフォーマットã?æ–?—å? 470 */ 471 public void setItdBody( final String itd ) { 472 if( itd != null ) { 473 itdBody = itd; 474 } 475 } 476 477 /** 478 * itdフォーマット文å—å?ã‚’å–å¾—ã—ã¾ã™ã? 479 * 480 * itd ãƒœãƒ‡ã‚£éƒ¨ã®æ–?—å?ã‚’å–å¾—ã—ã¾ã™ã? 481 * itd ボディã¯ã€ç¹°ã‚Šè¿”ã—処ç?‚’行ã„ã¾ã™ã?ã“れをã?上ä½ã?ボディæ–?—å?ã®ä¸ã® 482 * HYBS_ITD_MARKER æ–?—å? ã¨ç½®ãæ›ãˆã¾ã™ã? 483 * 484 * @og.rev 3.5.6.0 (2004/06/18) itdフォーマット文å—å?ã®å–り込㿠485 * 486 * @return itdフォーマットã?æ–?—å? 487 */ 488 public String getItdBody() { 489 return itdBody; 490 } 491 492 /** 493 * ã‚µãƒ‹ã‚¿ã‚¤ã‚ºã®æˆ»ã?"\\]\\"ã‹ã‚‰"["ã«æˆ»ã?を行ã„ã¾ã™ã? 494 * 495 * @og.rev 5.1.7.0 (2010/06/01) æ–°è¦ä½œæ? 496 * 497 * @param str サニタイズã•ã‚ŒãŸæ–‡å—å? 498 * 499 * @return サニタイズ戻ã—å?ç?¾Œã?æ–?—å? 500 */ 501 private String decodeSanitizedStr( final String str ) { 502 if( str != null && str.indexOf( "\\]\\" ) >= 0 ) { 503 return str.replace( "\\]\\", "[" ); 504 } 505 else { 506 return str; 507 } 508 } 509 }