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 }