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 }