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 ) &gt;= 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 ) &gt;= 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(&lt;)、LE(&lt;=)、GT(&gt;)、GE(&gt;=) がありますã?
501             * 初期値は、EQ(同じかどã�?�‹)ですã?
502             * 比è¼??、val1 に対して行われますã?val1 またã? val2 ã�?null の場合ã?、常にfalseã�?
503             * 返されますã?通常の A &lt; B ならã?、not( B &gt;= 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    }