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.hayabusa.common.HybsSystemException;
020
021 import org.opengion.fukurou.util.StringUtil ;
022 import static org.opengion.fukurou.util.StringUtil.nval ;
023
024 import java.util.Locale ;
025
026 /**
027 * val1 属æ? と val2 属æ?のæ–?—å?表現の比è¼?�«より BODY を表示/非表示をå?り替えるタグですã?
028 *
029 * val1.equals( val2 ) ã�?成立すれã??¤ BODY を表示しますã?
030 * val1 ã�?null の場合ã?、無条件で非æ?立になりますã?
031 * ( val1 == val2 ) はチェãƒ?‚¯しなã�?�¨ã�?�†イメージですã?
032 * val1 ã�?null かどã�?�‹判断する場合ã?、nullCheck="true" を使用してくださいã€?
033 * そã?他ã?属æ?は、比è¼?–¹法をæŒ?®šしますã?
034 *
035 * @og.formSample
036 * ●形式ï¼?lt;og:equals val1="…" val2="[…]" ?¥?¥?¥ >?¥?¥?¥</og:equals>
037 * ●body?šあã‚?EVAL_BODY_INCLUDE:BODYをインクルードし、{@XXXX} は解析しません)
038 *
039 * ●Tag定義??
040 * <og:equals
041 * val1 ○ã?TAG】equals で比è¼?�™るときã?、第?‘引数(左辺)を指定しまã�?å¿??)ã€?
042 * val2 【TAG】equals で比è¼?�™るときã?、第?’引数(右辺)を指定しまã�?
043 * ignoreCase 【TAG】大æ–??小文字を区別しなã�?�‹どã�?�‹[true/false]を指定しまã�?初期値:false(区別する))
044 * startsWith 【TAG】このæ–?—å?がã?æŒ?®šされた接頭辞で始まるかどã�?�‹[true/false]を判定しまã�?初期値:false)
045 * nullCheck 【TAG】null チェãƒ?‚¯を行うかどã�?�‹[true/false]を指定しまã�?初期値:false)
046 * notEquals 【TAG】判定結果を反転させるかどã�?�‹[true/false]を指定しまã�?初期値:false)
047 * contains 【TAG】文字å?が含まれてã�?‚‹かどã�?�‹[true/false]の判定しまã�?初期値:false)
048 * endsWith 【TAG】指定された接尾辞で終るかどã�?�‹[true/false]を判定しまã�?初期値:false)
049 * matches 【TAG】指定された正規表現とä¸??するかどã�?�‹[true/false]を判定しまã�?初期値:false)
050 * useStop 【TAG】BODYをå?ç�?¾Œに停止するかどã�?�‹[true/false]を指定しまã�?初期値:false)
051 * operator 【TAG】比è¼?�™る操作を EQ,LT,LE,GT,GE からæŒ?®šしまã�?初期値:EQ)
052 * compareType 【TAG】大小比è¼?�™る方æ³?STRING:前方比è¼?、NUMBER:数値比è¼?を指定しまã�?初期値:STRING)
053 * debug 【TAG】デバッグæƒ??をå?力するかどã�?�‹[true/false]を指定しまã�?初期値:false)
054 * > ... Body ...
055 * </og:equals>
056 *
057 * ●使用ä¾?
058 * ・<og:equals val1="ABCD" val2="{@value}" >
059 * val1.equals( val2 ) 時に実行したいå†?®¹
060 * </og:equals>
061 * ・<og:equals val1="{@value}" nullCheck="true" >
062 * val1がnullの時に実行したいå†?®¹
063 * </og:equals>
064 *
065 * val1 : equals で比è¼?�™るときã?、第?‘引数を指定しまã�?å¿??)ã€?
066 * val2 : equals で比è¼?�™るときã?、第?’引数を指定しますã?
067 * ignoreCase : 大æ–??小文字を区別しなã�?�‹どã�?�‹[true/false]を指定しまã�?初期値:false[区別する])ã€?
068 * startsWith : こã?æ–?—å?がã?æŒ?®šされた接頭辞で始まるかどã�?�‹[true/false]を判定しまã�?初期値:false)ã€?
069 * nullCheck : null チェãƒ?‚¯を行うかどã�?�‹[true/false]を指定しまã�?初期値:false)ã€?
070 * notEquals : 判定結果を反転させるかどã�?�‹[true/false]æŒ?®šしまã�?初期値:false)ã€?
071 * contains : æ–?—å?が含まれてã�?‚‹かどã�?�‹[true/false]の判定しまã�?初期値:false)ã€?
072 * endsWith : æŒ?®šされた接尾辞で終るかどã�?�‹[true/false]を判定しまã�?初期値:false)ã€?
073 * matches : æŒ?®šされた正規表現とä¸??するかどã�?�‹[true/false]を判定しまã�?初期値:false)ã€?
074 * operator : LT(<)、LE(<=)、GT(>)、GE(>=)、EQ(==)を指定しまã�?初期値:EQ)
075 * compareType : STRING(前方比è¼? ã�?NUMBER(数値比è¼? かをæŒ?®šしまã�?初期値:STRING)ã€?
076 * debug : ãƒ?ƒ�ãƒ?‚°æƒ??ã‚?出力するかどã�?�‹[true/false]を指定しまã�?初期値:false)ã€?
077 *
078 * @og.group 画面制御
079 *
080 * @version 4.0
081 * @author Kazuhiko Hasegawa
082 * @since JDK5.0,
083 */
084 public class EqualsTag extends CommonTagSupport {
085 //* こã?プログラãƒ??VERSIONæ–?—å?を設定しますã? {@value} */
086 private static final String VERSION = "5.1.2.0 (2010/01/01)" ;
087
088 private static final long serialVersionUID = 512020100101L ;
089
090 // 3.8.1.3B (2006/01/30) operator にæŒ?®šできる定数を定義
091 private static final String[] OPERATOR_LIST = new String[] { "EQ","LT","LE","GT","GE","GE" };
092
093 // 3.8.1.3B (2006/01/30) compareType にæŒ?®šできる定数を定義
094 private static final String[] COMP_TYPE_LIST = new String[] { "STRING","NUMBER" };
095
096 private String value1 = null;
097 private String value2 = null;
098 // 5.1.2.0 (2010/01/01)
099 // private boolean ignoreCase = true; // 大æ–??小文字ã?区別
100 private boolean ignoreCase = false; // 大æ–??小文字ã?区別
101 private boolean isStartsWith= false; // 先é?から始まるかどã�?�‹のチェãƒ?‚¯(startsWith)
102 private boolean nullCheck = false; // null チェãƒ?‚¯を行う場合うかどã�?�‹??
103 private boolean notEquals = false; // 判定結果を反転させて処ç�?�—ますã?
104
105 // 3.2.0.0 (2003/05/22) 判定方法に以下ã??“方法を追åŠ?�—ますã?
106 private boolean isContains = false; // æ–?—å?が含まれてã�?‚‹かどã�?�‹の判å®?
107 private boolean isEndsWith = false; // æŒ?®šされた接尾辞で終るかどã�?�‹を判å®?endsWith)
108 private boolean isMatches = false; // æŒ?®šされた正規表現とä¸??するかどã�?�‹を判å®?
109
110 // 3.8.1.2 (2005/12/19) BODYをå?ç�?¾Œに停止するかどã�?�‹を指定しますã?
111 private boolean useStop = false; // BODYをå?ç�?¾Œに停止(true)するかどã�?�‹
112
113 // 3.8.1.3B (2006/01/30) operator、compareType 属æ?を追åŠ?�—ますã?
114 private String operator = "EQ";
115 private String compareType = "STRING";
116
117 /**
118 * Taglibの開始タグが見つかったときに処ç�?�™ã‚?doStartTag() ã‚?オーバã?ライドしますã?
119 *
120 * @og.rev 3.2.0.0 (2003/05/22) 判定方法に,contains,endsWith,matches の方法を追åŠ?
121 * @og.rev 3.8.1.3B (2006/01/30) operator、compareType 属æ?を追åŠ?�—ますã?
122 * @og.rev 3.8.5.1 (2006/04/28) equals の結果ã�?true 時ã?み、useStop="true" を有効にするã€?
123 *
124 * @return 後続å?ç�??æŒ?¤º
125 */
126 @Override
127 public int doStartTag() {
128 boolean rtn = notEquals;
129 if( ( isStartsWith && startsWith( value1,value2 ) ) || // 先に isStartsWith をチェãƒ?‚¯
130 ( isContains && contains( value1,value2 ) ) ||
131 ( isEndsWith && endsWith( value1,value2 ) ) ||
132 ( isMatches && matches( value1,value2 ) ) ||
133 ( nullCheck && isNullCheck( value1 ) ) ||
134 ( operation( value1,value2,operator,compareType,ignoreCase ) ) ) {
135 rtn = ! notEquals;
136 }
137
138 // 3.8.5.1 (2006/04/28) equals の結果ã�?true 時ã?み、useStop="true" を有効にするã€?
139 useStop = useStop && rtn ; // 少し回りくどã�?�Œ判りやすいでしょã€?
140
141 if( rtn ) { return( EVAL_BODY_INCLUDE ); }
142 else { return( SKIP_BODY ); }
143 }
144
145 /**
146 * Taglibの終äº?‚¿グが見つかったときに処ç�?�™ã‚?doEndTag() ã‚?オーバã?ライドしますã?
147 *
148 * @og.rev 3.8.1.2 (2005/12/19) useStop 属æ?をå?ç�?�—ますã?
149 *
150 * @return 後続å?ç�??æŒ?¤º
151 */
152 @Override
153 public int doEndTag() {
154 if( useStop ) {
155 return(SKIP_PAGE); // ペã?ジの残りの処ç�?‚’行わなã�??
156 }
157 else {
158 return(EVAL_PAGE); // ペã?ジの残りを評価するã€?
159 }
160 }
161
162 /**
163 * タグリブオブジェクトをリリースしますã?
164 * キャãƒ?‚·ュされて再利用されるã?で、フィールドã?初期設定を行いますã?
165 *
166 * @og.rev 2.0.0.4 (2002/09/27) カスタãƒ?‚¿グの release() メソãƒ?ƒ‰をã?追åŠ?
167 * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応ã?release2() ã‚?doEndTag()で呼ぶã€?
168 * @og.rev 3.2.0.0 (2003/05/22) 判定方法に,contains,endsWith,matches の方法を追åŠ?
169 * @og.rev 3.8.1.2 (2005/12/19) useStop 属æ?の追åŠ?
170 * @og.rev 3.8.1.3 (2006/01/30) operator、compareType 属æ?を追åŠ?�—ますã?
171 * @og.rev 5.1.2.0 (2010/01/01) ignoreCase属æ?の初期値をfalse(大æ–?—ã?小文字を区別する)
172 *
173 */
174 @Override
175 protected void release2() {
176 super.release2();
177 value1 = null;
178 value2 = null;
179 // 5.1.2.0 (2010/01/01)
180 // ignoreCase = true; // 大æ–??小文字ã?区別
181 ignoreCase = false; // 大æ–??小文字ã?区別
182 isStartsWith = false; // 先é?から始まるかどã�?�‹のチェãƒ?‚¯
183 nullCheck = false; // null チェãƒ?‚¯を行う場合うかどã�?�‹??
184 notEquals = false; // 判定結果を反転させて処ç�?�—ますã?
185 isContains = false; // æ–?—å?が含まれてã�?‚‹かどã�?�‹の判å®?
186 isEndsWith = false; // æŒ?®šされた接尾辞で終るかどã�?�‹を判å®?
187 isMatches = false; // æŒ?®šされた正規表現とä¸??するかどã�?�‹を判å®?
188 useStop = false; // 3.8.1.2 (2005/12/19)
189 operator = "EQ"; // 3.8.1.3B (2006/01/30)
190 compareType = "STRING"; // 3.8.1.3B (2006/01/30)
191 }
192
193 /**
194 * operator に対応した比è¼??ç�?‚’行いますã?
195 * val1 またã?、val2 ã�?null の場合ã?、無条件で false を返しますã?
196 *
197 * @og.rev 3.8.1.3 (2006/02/06) 判定方法に, LT, GT, LE, GE, EQ追åŠ?
198 *
199 * @param val1 第?‘引数
200 * @param val2 第?’引数
201 * @param op 比è¼?–¹æ³?
202 * @param ty 比è¼?¨®é¡?
203 * @param ig 大小文字ã?区別
204 *
205 * @return 第ä¸?¼•数ã�?null でなくã?且つ opeに対応した比è¼?µ�果を返しますã?
206 */
207 private boolean operation( final String val1,final String val2,final String op,final String ty,final boolean ig ) {
208 if( isNullCheck( val1 ) || isNullCheck( val2 )) { return false; }
209 // æ–?—å?比è¼?
210 final boolean rtn;
211 if( "STRING".equals( ty ) ) {
212 String va1 = val1;
213 String va2 = val2;
214 // 大æ–?—小文字を区別しなã�?
215 if( ig ) {
216 va1 = val1.toUpperCase(Locale.JAPAN);
217 va2 = val2.toUpperCase(Locale.JAPAN);
218 }
219 if( "LT".equals( op ) ) {
220 rtn = va1.compareTo( va2 ) < 0;
221 } else if( "GT".equals( op ) ) {
222 rtn = va1.compareTo( va2 ) > 0;
223 } else if( "LE".equals( op ) ) {
224 rtn = va1.compareTo( va2 ) <= 0;
225 } else if( "GE".equals( op ) ) {
226 rtn = va1.compareTo( va2 ) >= 0;
227 } else {
228 rtn = va1.equals( va2 );
229 }
230 // 数字比è¼?
231 } else {
232 // 厳å¯?�«処ç�?�—なくて良ã�?�¨思うのでBigDecimalは使わなã�?
233 double d1 = StringUtil.parseDouble( val1 );
234 double d2 = StringUtil.parseDouble( val2 );
235 if( "LT".equals( op ) ) {
236 rtn = d1 < d2;
237 } else if( "GT".equals( op ) ) {
238 rtn = d1 > d2;
239 } else if( "LE".equals( op ) ) {
240 rtn = d1 <= d2;
241 } else if( "GE".equals( op ) ) {
242 rtn = d1 >= d2;
243 } else {
244 // rtn = d1 == d2;
245 rtn = Math.abs(d1 - d2) < 0.0000001 ;
246 }
247 }
248 return rtn ;
249 }
250
251 /**
252 * startsWith で比è¼?�™るときã?、比è¼?ƒ¡ソãƒ?ƒ‰ã€?
253 *
254 * val1 がã?比è¼??のæ–?—å?で、val2 が部åˆ?–‡字å?になりますã?
255 *
256 * @param val1 第?‘引数
257 * @param val2 第?’引数
258 *
259 * @return 第ä¸?¼•数ã�?null でなくã?且つ val1.startsWith( val2 ) の場å�?true
260 */
261 private boolean startsWith( final String val1,final String val2 ) {
262 boolean rtn = false;
263 if( ! isNullCheck( val1 ) && ! isNullCheck( val2 ) ) {
264 if( ignoreCase ) { rtn = (val1.toUpperCase(Locale.JAPAN)).startsWith( val2.toUpperCase(Locale.JAPAN) ) ; }
265 else { rtn = val1.startsWith( val2 ) ; }
266 }
267 return rtn ;
268 }
269
270 /**
271 * nullCheck で判定するときã?、判定メソãƒ?ƒ‰ã€?
272 *
273 * @param val1 第?‘引数
274 *
275 * @return 第ä¸?¼•数ã�?null/ゼロストリング の場å�?true
276 */
277 private boolean isNullCheck( final String val1 ) {
278 boolean rtn = true;
279 if( val1 != null && val1.length() > 0 ) {
280 rtn = false;
281 }
282 return rtn ;
283 }
284
285 /**
286 * contains で比è¼?�™るときã?、比è¼?ƒ¡ソãƒ?ƒ‰ã€?
287 *
288 * val1 がã?比è¼??のæ–?—å?で、val2 が部åˆ?–‡字å?になりますã?
289 *
290 * @og.rev 3.2.0.0 (2003/05/22) 判定方法に,contains,endsWith,matches の方法を追åŠ?
291 *
292 * @param val1 第?‘引数
293 * @param val2 第?’引数
294 *
295 * @return 第ä¸?¼•数ã�?null でなくã?且つ val1.indexOf( val2 ) >= 0 の場å�?true
296 */
297 private boolean contains( final String val1,final String val2 ) {
298 int rtn = -1;
299 if( ! isNullCheck( val1 ) && ! isNullCheck( val2 ) ) {
300 if( ignoreCase ) { rtn = (val1.toUpperCase(Locale.JAPAN)).indexOf( val2.toUpperCase(Locale.JAPAN) ) ; }
301 else { rtn = val1.indexOf( val2 ) ; }
302 }
303 return ( rtn >= 0 ) ;
304 }
305
306 /**
307 * endsWith で比è¼?�™るときã?、比è¼?ƒ¡ソãƒ?ƒ‰ã€?
308 *
309 * val1 がã?比è¼??のæ–?—å?で、val2 が部åˆ?–‡字å?になりますã?
310 *
311 * @og.rev 3.2.0.0 (2003/05/22) 判定方法に,contains,endsWith,matches の方法を追åŠ?
312 *
313 * @param val1 第?‘引数
314 * @param val2 第?’引数
315 *
316 * @return 第ä¸?¼•数ã�?null でなくã?且つ val1.endsWith( val2 ) の場å�?true
317 */
318 private boolean endsWith( final String val1,final String val2 ) {
319 boolean rtn = false;
320 if( ! isNullCheck( val1 ) && ! isNullCheck( val2 ) ) {
321 if( ignoreCase ) { rtn = (val1.toUpperCase(Locale.JAPAN)).endsWith( val2.toUpperCase(Locale.JAPAN) ) ; }
322 else { rtn = val1.endsWith( val2 ) ; }
323 }
324 return rtn ;
325 }
326
327 /**
328 * matches で比è¼?�™るときã?、比è¼?ƒ¡ソãƒ?ƒ‰ã€?
329 *
330 * val1 がã?比è¼??のæ–?—å?で、val2 が正規表現のæ–?—å?になりますã?
331 *
332 * @og.rev 3.2.0.0 (2003/05/22) 判定方法に,contains,endsWith,matches の方法を追åŠ?
333 *
334 * @param val1 第?‘引数
335 * @param val2 第?’引数
336 *
337 * @return 第ä¸?¼•数ã�?null でなくã?且つ val1.matches( val2 ) の場å�?true
338 */
339 private boolean matches( final String val1,final String val2 ) {
340 boolean rtn = false;
341 if( ! isNullCheck( val1 ) && ! isNullCheck( val2 ) ) {
342 rtn = val1.matches( val2 );
343 }
344 return rtn ;
345 }
346
347 /**
348 * 【TAG】equals で比è¼?�™るときã?、第?‘引数(左辺)を指定しますã?
349 *
350 * @og.tag equals で比è¼?�™るときã?、第?‘引数を指定しますã?
351 * val1 ã�?null の場合ã?、無条件で非æ?立になりますã?
352 * ( val1 == val2 ) はチェãƒ?‚¯しなã�?�¨ã�?�†イメージですã?
353 * val1 ã�?null かどã�?�‹判断する場合ã?、nullCheck="true" を使用してくださいã€?
354 *
355 * @param val 第?‘引数
356 */
357 public void setVal1( final String val ) {
358 this.value1 = getRequestParameter( val );
359 }
360
361 /**
362 * 【TAG】equals で比è¼?�™るときã?、第?’引数(右辺)を指定しますã?
363 *
364 * @og.tag equals で比è¼?�™るときã?、第?’引数を指定しますã?
365 *
366 * @param val 第?’引数
367 */
368 public void setVal2( final String val ) {
369 this.value2 = getRequestParameter( val );
370 }
371
372 /**
373 * 【TAG】大æ–??小文字を区別しなã�?�‹どã�?�‹[true/false]を指定しまã�?初期値:false(区別する))ã€?
374 *
375 * @og.tag
376 * startsWith , contains , endsWith , equalsIgnoreCase での比è¼?™‚に、比è¼?¯¾象の
377 * 大æ–??小文字を区別しなã�?�‹どã�?�‹を指定しますã?
378 * 区別しなã�?("true") 場合ã?aaa と AAA は、ä¸??したとみなされますã?
379 * 初期値は、区別する ("false") ですã?
380 *
381 * @param flag 大æ–??小文字を区別しなã�?�‹どã�?�‹ [true:しなã�?それ以å¤?する]
382 */
383 public void setIgnoreCase( final String flag ) {
384 ignoreCase = nval( getRequestParameter( flag ),ignoreCase );
385 }
386
387 /**
388 * 【TAG】このæ–?—å?がã?æŒ?®šされた接頭辞で始まるかどã�?�‹[true/false]を判定しまã�?初期値:false)ã€?
389 *
390 * @og.tag
391 * val1.startsWith( val2 ) の書式で判定されますã?こã?場合ã?"ABCDEFG".startsWith( "ABC" )
392 * の場合に、条件成立しますã?(つまりã?val1 に対して、val2 で始まってã�?‚‹かどã�?�‹問合せる)
393 * 初期値は、判定しなã�?("false")
394 *
395 * @param flag 接頭辞で始まるかどã�?�‹ [true:判定すã‚?それ以å¤?しない]
396 */
397 public void setStartsWith( final String flag ) {
398 isStartsWith = nval( getRequestParameter( flag ),isStartsWith );
399 }
400
401 /**
402 * 【TAG】null チェãƒ?‚¯を行うかどã�?�‹[true/false]を指定しまã�?初期値:false)ã€?
403 *
404 * @og.tag
405 * チェãƒ?‚¯を行うようにæŒ?®?"true")した場合に、第ä¸?¼•数ã�?null の場合ã?,
406 * 条件成立して、タグのBody は実行されますã?
407 * 初期値は、行わなã�?(true 以å¤?ですã?
408 *
409 * @param flag null チェãƒ?‚¯を行うかどã�?�‹ [true:行う/それ以å¤?行わない]
410 */
411 public void setNullCheck( final String flag ) {
412 nullCheck = nval( getRequestParameter( flag ),nullCheck );
413 }
414
415 /**
416 * 【TAG】判定結果を反転させるかどã�?�‹[true/false]を指定しまã�?初期値:false)ã€?
417 *
418 * @og.tag
419 * 通常の成立条件において、不æ?立ã?場合に、BODY を実行しますã?
420 * 通常の処ç�?µ�果を求めて、最後に、反転処ç�?‚’行いますã?
421 * 初期値はã€??常 (true 以å¤?ですã?
422 *
423 * @param flag [true:反転する/それ以å¤?通常]
424 */
425 public void setNotEquals( final String flag ) {
426 notEquals = nval( getRequestParameter( flag ),notEquals );
427 }
428
429 /**
430 * 【TAG】文字å?が含まれてã�?‚‹かどã�?�‹[true/false]の判定しまã�?初期値:false)ã€?
431 *
432 * @og.tag
433 * val1.indexOf( val2 ) >= 0 の書式で判定されますã?こã?場合ã?"ABCDEFG".indexOf( "CDE" )
434 * の場合に、条件成立しますã?(つまりã?val1 に対して、val2 が含まれてã�?‚‹かどã�?�‹問合せる)
435 * 初期値は、判定しなã�?("false")
436 *
437 * @og.rev 3.2.0.0 (2003/05/22) 判定方法に,contains,endsWith,matches の方法を追åŠ?
438 *
439 * @param flag [true:判定すã‚?それ以å¤?しない]
440 */
441 public void setContains( final String flag ) {
442 isContains = nval( getRequestParameter( flag ),isContains );
443 }
444
445 /**
446 * 【TAG】指定された接尾辞で終るかどã�?�‹[true/false]を判定しまã�?初期値:false)ã€?
447 *
448 * @og.tag
449 * val1.endsWith( val2 ) の書式で判定されますã?こã?場合ã?"ABCDEFG".endsWith( "EFG" )
450 * の場合に、条件成立しますã?(つまりã?val1 に対して、val2 で終わってã�?‚‹かどã�?�‹問合せる)
451 * 初期値は、判定しなã�?("false")
452 *
453 * @og.rev 3.2.0.0 (2003/05/22) 判定方法に,contains,endsWith,matches の方法を追åŠ?
454 *
455 * @param flag [true:判定すã‚?それ以å¤?しない]
456 */
457 public void setEndsWith( final String flag ) {
458 isEndsWith = nval( getRequestParameter( flag ),isEndsWith );
459 }
460
461 /**
462 * 【TAG】指定された正規表現とä¸??するかどã�?�‹[true/false]を判定しまã�?初期値:false)ã€?
463 *
464 * @og.tag
465 * val1.matches( val2 ) の書式で判定されますã?val2 にæŒ?®šされた正規表現でã€?
466 * ä¸??するかどã�?�‹を判定しますã?ここでの正規表現とはã€?
467 * java.util.regex.Pattern.matches(val1, val2) での判定結果と同じですã?
468 * 初期値は、判定しなã�?("false")
469 *
470 * @og.rev 3.2.0.0 (2003/05/22) 判定方法に,contains,endsWith,matches の方法を追åŠ?
471 *
472 * @param flag [true:判定すã‚?それ以å¤?しない]
473 */
474 public void setMatches( final String flag ) {
475 isMatches = nval( getRequestParameter( flag ),isMatches );
476 }
477
478 /**
479 * 【TAG】BODYをå?ç�?¾Œに停止するかどã�?�‹[true/false]を指定しまã�?初期値:false)ã€?
480 *
481 * @og.tag
482 * 処ç�?µ�果などに応じて、以下ã?処ç�?‚’停止したã�??合に、使用しますã?
483 * ここでは、条件を判定後ã?true の場合に、BODY部をå?åŠ?処ç�?した後にã€?
484 * ここにセãƒ?ƒˆされたå?に応じて、以下ã?ペã?ジ処ç�?‚’行うかどã�?�‹を指定しますã?
485 * true を指定すると、以下ã?処ç�??、行われませんã€?
486 * 初期値は、停止しなã�?("false")
487 *
488 * @og.rev 3.8.1.2 (2005/12/19) 新規追åŠ?
489 *
490 * @param flag [true:判定すã‚?それ以å¤?しない]
491 */
492 public void setUseStop( final String flag ) {
493 useStop = nval( getRequestParameter( flag ),useStop );
494 }
495
496 /**
497 * 【TAG】比è¼?�™る操作を EQ,LT,LE,GT,GE からæŒ?®šしまã�?初期値:EQ)ã€?
498 *
499 * @og.tag
500 * 比è¼?–¹法として、EQ(==)、LT(<)、LE(<=)、GT(>)、GE(>=) がありますã?
501 * 初期値は、EQ(同じかどã�?�‹)ですã?
502 * 比è¼??、val1 に対して行われますã?val1 またã? val2 ã�?null の場合ã?、常にfalseã�?
503 * 返されますã?通常の A < B ならã?、not( B >= A ) の関係ã?成立しませんã€?
504 * val1 ã�?null でなã�??合ã?、val1(5) LT vla2(8) は、true を返しますã?
505 * ignoreCase属æ?(大æ–??小文字ã?区別)を指定することで、比è¼?�™る文字å?の
506 * 大æ–?—小文字を統ä¸?�•せることが可能ですã?
507 * なおã?比è¼?™‚には、compareType 属æ?にもご注意くã�?�•ã�??これは、文字å?比è¼?�‹
508 * 数字比è¼?‚’æŒ?®šしますã?
509 *
510 * @og.rev 3.8.1.3B (2006/01/30) 新規追åŠ?
511 *
512 * @param ope EQ,LT,LE,GT,GE を指å®?
513 * @see #setIgnoreCase( String )
514 * @see #setCompareType( String )
515 */
516 public void setOperator( final String ope ) {
517 operator = nval( getRequestParameter( ope ),operator );
518
519 if( !check( operator, OPERATOR_LIST ) ) {
520 String errMsg = "æŒ?®šã?オペレーションはサポã?トされてã�?�¾せん。オペレーションエラー"
521 + HybsSystem.CR
522 + "operator=[" + ope + "] "
523 + HybsSystem.CR
524 + StringUtil.array2csv( OPERATOR_LIST ) ;
525 throw new HybsSystemException( errMsg );
526 }
527 }
528
529 /**
530 * 【TAG】大小比è¼?�™る方æ³?STRING:前方比è¼?、NUMBER:数値比è¼?を指定しまã�?初期値:STRING)ã€?
531 *
532 * @og.tag
533 * operator 属æ?で大小を比è¼?�™るå?合ã?比è¼?–¹法として、前方比è¼?�¨数値比è¼?‚’æŒ?®šできますã?
534 * STRING(前方比è¼?とは、お互いのæ–?—å?を前方からé ?�«比è¼?�—てã�?��ますã?例えばã€?
535 * ABC と AABBCC ã‚??123 と 112233 では、AABBCC ã‚?112233 が小さã�?�¨判断されますã?
536 * NUMBER(数値比è¼?ではã€?23 と 112233 ではã€?23 が小さã�?�¨判断されますã?
537 * NUMBER は、数字に変換できる価であるå¿?¦�がありますã?
538 * STRING は、ignoreCase属æ?(大æ–??小文字ã?区別)を指定することで、比è¼?�™る文字å?の
539 * 大æ–?—小文字を統ä¸?�•せることが可能ですã?
540 * 初期値は、STRING(前方比è¼?ですã?
541 *
542 * @og.rev 3.8.1.3B (2006/01/30) 新規追åŠ?
543 *
544 * @param type STRING(前方比è¼? ã�?NUMBER(数値比è¼?を指å®?
545 * @see #setIgnoreCase( String )
546 * @see #setOperator( String )
547 */
548 public void setCompareType( final String type ) {
549 compareType = nval( getRequestParameter( type ),compareType );
550
551 if( !check( compareType, COMP_TYPE_LIST ) ) {
552 String errMsg = "æŒ?®šã?compareTypeはサポã?トされてã�?�¾せん。compareTypeエラー"
553 + HybsSystem.CR
554 + "compareType=[" + type + "] "
555 + HybsSystem.CR
556 + StringUtil.array2csv( COMP_TYPE_LIST ) ;
557 throw new HybsSystemException( errMsg );
558 }
559 }
560
561 /**
562 * こã?オブジェクトã?æ–?—å?表現を返しますã?
563 * 基本çš?�«ãƒ?ƒ�ãƒ?‚°目çš?�«使用しますã?
564 *
565 * @og.rev 3.2.0.0 (2003/05/22) 判定方法に,contains,endsWith,matches の方法を追åŠ?
566 *
567 * @return こã?クラスのæ–?—å?表現
568 */
569 @Override
570 public String toString() {
571 return org.opengion.fukurou.util.ToString.title( this.getClass().getName() )
572 .println( "VERSION" ,VERSION )
573 .println( "value1" ,value1 )
574 .println( "value2" ,value2 )
575 .println( "ignoreCase" ,ignoreCase )
576 .println( "startsWith" ,isStartsWith )
577 .println( "nullCheck" ,nullCheck )
578 .println( "notEquals" ,notEquals )
579 .println( "contains" ,isContains )
580 .println( "endsWith" ,isEndsWith )
581 .println( "matches" ,isMatches )
582 .println( "useStop" ,useStop )
583 .println( "Other..." ,getAttributes().getAttribute() )
584 .fixForm().toString() ;
585 }
586 }