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.db;
017    
018    import java.util.Calendar;
019    import java.util.Date;
020    import java.util.Locale;
021    import java.text.DateFormat;
022    import java.text.SimpleDateFormat;
023    
024    import org.opengion.hayabusa.common.HybsSystem;
025    import org.opengion.fukurou.util.LogWriter;
026    import org.opengion.fukurou.util.HybsDateUtil;
027    
028    /**
029     * ãƒ??ã‚¿ã®ã‚³ãƒ¼ãƒ‰æƒ…報をå–り扱ã?‚¯ãƒ©ã‚¹ã§ã™ã?
030     *
031     * ãƒ‘ãƒ©ãƒ¡ãƒ¼ã‚¿ã§æŒ?®šã—ãŸã?é–‹å§‹ã?終äº??スãƒ?ƒƒãƒ—ã?フォーマットã?titleフォーマットã?æƒ??ã‹ã‚‰ã€?
032     * HTMLã®ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã‚?ƒªã‚¹ãƒˆã‚’作æ?ã™ã‚‹ãŸã‚㮠オプション
033     * タグを作æ?ã—ãŸã‚Šã?与ãˆã‚‰ã‚ŒãŸã‚­ãƒ¼ã‚’ã‚‚ã¨ã«ã€ãƒã‚§ãƒ?‚¯æ¸ˆã¿ã®ã‚ªãƒ—ションタグを作æ?ã—ãŸã‚Šã—ã¾ã™ã?
034     * パラメータã®åˆæœŸå€¤ã¯ã€?–‹å§?0)ã€çµ‚äº?14)ã€ã‚¹ãƒ?ƒƒãƒ?1)ã€ãƒ•ォーマッãƒ?MM/dd)ã€titleフォーマッãƒ?null) ã§ã™ã?
035     * 
036     * ã“ã“ã§ã¯ã€æ—¥ä»?å¹´/æœ?æ—¥?‰ã?自動生æˆã‚’行ã„ã¾ã™ã?
037     * 基準ã?ã€å®Ÿè¡Œæ—¥ã«å¯¾ã—ã¦ã€?¼‹ï¼ã?æ•°å­—ã‚’æŒ?®šã—ã¾ã™ã?
038     * 例ï¼?0130206 ã«å¯¾ã—ã¦ã€?2,3,1 を指定ã™ã‚‹ã¨ã€?0130204,20130205,20130206,20130207,20130208,20130209 ã¨ãªã‚Šã¾ã™ã?
039     * 
040     * é–‹å§‹ã?終äº?«ã€ç‰¹æ®Šãªã‚³ãƒžãƒ³ãƒ‰ã‚’æŒ?®šã™ã‚‹äº‹ã‚‚å¯èƒ½ã§ã™ã?
041     * ・SD ?šå½“æœˆã®æœ??ã®æ—¥ä»˜ã«ã‚»ãƒ?ƒˆã—ã¾ã™ã?(当月?‘æ—¥)
042     * ・ED ?šå½“æœˆã®æœ?¾Œã?日付ã«ã‚»ãƒ?ƒˆã—ã¾ã™ã?(当月月末)
043     * ・SW ?šæ—¥ä»˜å?ç??週åˆã‚(月曜日)ã«ã‚»ãƒ?ƒˆã—ã¾ã™ã?日付ã?当日よりå‰ã«ç§»å‹•ã—ã¾ã™ã?
044     * ・EW ?šæ—¥ä»˜å?ç??週末(日曜日)ã«ã‚»ãƒ?ƒˆã—ã¾ã™ã?日付ã?当日より後ã‚ã«ç§»å‹•ã—ã¾ã™ã?
045     * ・D1 ??DXXX ?šæ—¥ã‚’æŒ‡å®šã?åˆ? ã‘é?ã‚ã¾ã™ã?D1ãªã‚‰ç¿Œæ—¥ã€D200 ãªã‚?00æ—¥å¾?
046     * ・M1 ??MXXX ?šæœˆã‚’æŒ‡å®šã?åˆ? ã‘é?ã‚ã¾ã™ã?M1ãªã‚‰ç¿Œæœˆã€M6 ãªã‚‰åŠå¹´å¾?
047     * ・BSD ?šå?月ã?æœ??ã®æ—¥ä»˜ã«ã‚»ãƒ?ƒˆã—ã¾ã™ã?(先月?‘æ—¥)
048     * ・BED ?šå?月ã?æœ?¾Œã?日付ã«ã‚»ãƒ?ƒˆã—ã¾ã™ã?(先月月末)
049     * ・ASD ?šç¿Œæœˆã®æœ??ã®æ—¥ä»˜ã«ã‚»ãƒ?ƒˆã—ã¾ã™ã?(翌月?‘æ—¥)
050     * ・AED ?šç¿Œæœˆã®æœ?¾Œã?日付ã«ã‚»ãƒ?ƒˆã—ã¾ã™ã?(翌月月末)
051     * ・M1  ?šï¼‘ã‹æœˆå?。数字部åˆ??ã€ä»»æ„ã«æŒ?®šã§ãã‚‹ãŸã‚ã€M5 ã¨ã™ã‚Œã°ã€?¼•ã‹æœˆå?ã€?-2 ã¯ã€?¼’ã‹æœˆå‰
052     *
053     * スãƒ?ƒƒãƒ—ã?ã€ç„¡æŒ?®šã?å ´åˆã?ã€?¼‘æ—¥å˜ä½ã§ã™ã?例ãˆã°ã€SW,M6,7 ã¨ã™ã‚Œã°ã€æ¯Žé?æœˆæ›œæ—¥ã‚’ï¼–ã‹æœˆå?ã¾ã§ä½œæ?ã—ã¾ã™ã?
054     * ã¾ãŸã?M1 ã¯ã€?¼‘ã‹æœˆå˜ä½ã«ãªã‚Šã¾ã™ã?ãŸã ã—ã?é–‹å§‹æ—¥ã‚?SD ãªã©ã«ã—ãªã?¨ã€å¤§ã®æœˆã¨å°ã?月ã§ã€ãŠã‹ã—ããªã‚‹ã?ã§
055     * ã”æ³¨æ„ãã?•ã??
056     *
057     * キーã¯ã€?¼˜æ–‡å­—ã? yyyyMMdd å½¢å¼ã§ä¸Žãˆã‚‰ã‚Œã¾ã™ã?ラベルã¯ã€ãƒ•ォーマットã?æŒ?®šã«æº–æ‹ ã—ã¾ã™ã?
058     * フォーマットをæŒ?®šã™ã‚‹å?åˆã?ã€ã‚¹ãƒ?ƒƒãƒ—ã?ã€å¿??ã¨ãªã‚Šã¾ã™ã?
059     * フォーマットã?åˆæœŸå€¤ã¯ã€MM/dd ã§ã™ã?
060     * titleフォーマッãƒ?ã¯ã€tips表示ã™ã‚‹å ´åˆã?フォーマットã«ãªã‚Šã¾ã™ã?åˆæœŸå€¤ã¯ã€ã‚りã¾ã›ã‚“ã€?
061     *
062     * @og.group é¸æŠžãƒ‡ãƒ¼ã‚¿åˆ¶å¾¡
063     * @og.rev 5.6.1.1 (2013/02/08) æ–°è¦è¿½åŠ?
064     *
065     * @version  4.0
066     * @author   Kazuhiko Hasegawa
067     * @since    JDK5.0,
068     */
069    public class Selection_YMD implements Selection {
070            private final String   CACHE ;
071            private final String   ST_ED_STEP ;
072    
073            private final DateFormat lblFmt  ;
074            private final DateFormat tipsFmt ;
075    
076            private final long      maxCacheTime ;          // キャãƒ?‚·ãƒ¥ã®ç ´æ£?‚¿ã‚¤ãƒŸãƒ³ã‚°ã‚’計るãŸã‚ã®æœ?¤§æœ‰åŠ¹æ™‚é–“
077    
078            /**
079             * コンストラクター
080             *
081             * 引数ã¯ã€?–‹å§‹ã?終äº??スãƒ?ƒƒãƒ—ã?フォーマットã?titleフォーマットã§ã™ã?
082             * パラメータã®åˆæœŸå€¤ã¯ã€?–‹å§?0)ã€çµ‚äº?14)ã€ã‚¹ãƒ?ƒƒãƒ?1)ã€ãƒ•ォーマッãƒ?MM/dd)ã€titleフォーマッãƒ?null) ã§ã™ã?
083             *
084             * @param       editPrm é–‹å§‹ã?終äº??スãƒ?ƒƒãƒ—ã?フォーマットã?titleフォーマットを表ã™å¼•æ•°(-2,3,1)
085             */
086            public Selection_YMD( final String editPrm ) {
087            //      if( param.length < 2 ) {
088            //              String errMsg = "引数ã¯ã€?–‹å§‹ã?終äº??[スãƒ?ƒƒãƒ—]ã€[フォーマッãƒ?ã€?[titleフォーマッãƒ?ã§ã™ã?æœ?½Žã§ã‚‚ï¼’å?å¿?¦ã§ã™ã?";
089            //              throw new IllegalArgumentException( errMsg );
090            //      }
091    
092                    String[] param = (editPrm == null) ? new String[0] : editPrm.split( "," ) ;
093    
094                    String start   = (param.length > 0) ? param[0].trim() : "0" ;
095                    String end     = (param.length > 1) ? param[1].trim() : "14" ;
096    
097                    String step    = (param.length > 2) ? param[2].trim() : "1" ;
098                    String lblPrm  = (param.length > 3) ? param[3].trim() : "MM/dd" ;
099                    String tipsPrm = (param.length > 4) ? param[4].trim() : "MM�d日(EEE)" ;
100    
101                    Calendar cal = Calendar.getInstance();
102                    HybsDateUtil.calendarCalc( cal , start );
103    
104                    Calendar endCal = Calendar.getInstance();
105                    HybsDateUtil.calendarCalc( endCal , end );
106    
107                    DateFormat keyFmt  = new SimpleDateFormat( "yyyyMMdd",Locale.JAPAN );                                   // キーã¨ãªã‚‹ãƒ•ォーマットã?yyyyMMdd 固å®?
108                    lblFmt  = new SimpleDateFormat( lblPrm,Locale.JAPAN );                                                                  // ラベルã®ãƒ•ォーマッãƒ?
109                    tipsFmt = ( tipsPrm != null ) ? new SimpleDateFormat( tipsPrm,Locale.JAPAN ) : null ;   // titleフォーマッ�
110    
111                    ST_ED_STEP = "Start=" + lblFmt.format( cal.getTime() ) +
112                                             " , End=" + lblFmt.format( endCal.getTime() ) + " , Step=" + step ;
113    
114                    StringBuilder buf = new StringBuilder( HybsSystem.BUFFER_MIDDLE );
115    
116                    // cal.before( endCal ) ã§ã¯ã€åŒä¸?™‚刻ã®å ´åˆã« false ã«ãªã‚‹ç‚ºã€ã“ã“ã?判定ã§ã¯ä½¿ãˆã¾ã›ã‚“ã€?
117                    // sign を掛ã‘ç®—ã—ã¦ã?‚‹ã®ã¯ã€??é ?¯¾å¿?
118                    int sign = ( step.indexOf( '-' ) < 0 ) ? 1 : -1 ;    // スãƒ?ƒƒãƒ—ã?符å·ã€?
119                    while( endCal.compareTo( cal ) * sign >= 0 ) {
120                            String key  = keyFmt.format( cal.getTime() );
121                            String val  = lblFmt.format( cal.getTime() );
122    
123                            buf.append( "<option value=\"" ).append( key ).append( "\"" );
124                            if( tipsFmt != null ) {
125                                    String tips = tipsFmt.format( cal.getTime() ) ;
126                                    buf.append(" title=\"").append( tips ).append("\"");
127                            }
128                            buf.append( ">" ).append( val ).append( "</option>" );
129    
130                            HybsDateUtil.calendarCalc( cal , step );
131                    }
132    
133                    CACHE = buf.toString();
134    
135                    // ã‚­ãƒ£ã‚·ãƒ¥ã®æœ‰åŠ¹æœŸé–“ã‚’æ±‚ã‚ã‚‹ãŸã‚ã?時刻を作æ?ã—ã¾ã™ã?キャãƒ?‚·ãƒ¥ã¯ã€å½“æ—¥ã®ã¿æœ‰åйã§ã™ã?
136                    Calendar now   = Calendar.getInstance();
137                    now.set( Calendar.HOUR   , 0 );                         // 時ã?åˆ??ç§?をリセãƒ?ƒˆã—ã¾ã™ã?
138                    now.set( Calendar.MINUTE , 0 );
139                    now.set( Calendar.SECOND , 0 );
140                    now.add( Calendar.DAY_OF_MONTH , 1 );           // 1日進ã‚ã¾ã™ã?
141    
142                    maxCacheTime = now.getTimeInMillis() ;
143            }
144    
145            /**
146             * åˆæœŸå€¤ãŒé¸æŠžæ¸ˆã¿ã® é¸æŠžè‚¢(オプション)ã‚’è¿”ã—ã¾ã™ã?
147             * ã“ã?オプションã¯ã€å¼•æ•°ã®å€¤ã‚’å?期å?ã¨ã™ã‚‹ã‚ªãƒ—ションタグを返ã—ã¾ã™ã?
148             * ã“ã?メソãƒ?ƒ‰ã§ã¯ã€ãƒ©ãƒ™ãƒ«(短)ãŒè¨­å®šã•れã¦ã?‚‹å ´åˆã§ã‚‚ã?ã“れを使用ã›ãšã«å¿?šãƒ©ãƒ™ãƒ«(é•·)を使用ã—ã¾ã™ã?
149             *
150             * @og.rev 3.6.0.6 (2004/10/22) シーケンスアクセス機è?を指定ã™ã‚?seqFlag ã‚’å°Žå?
151             * @og.rev 4.0.0.0 (2005/01/31) selectValue ãŒã?null/ゼロæ–?­—å?ã§ãªã??åˆã«ã€?¸æŠžè‚¢ã«ãªã??åˆã?ã€ã‚¨ãƒ©ãƒ¼
152             *
153             * @param   selectValue  é¸æŠžã•れã¦ã?‚‹å€¤
154             * @param   seqFlag  シーケンスアクセス機è? [true:ON/false:OFF]
155             *
156             * @return  オプションタグ
157             * @see     #getOption( String, boolean, boolean )
158             */
159            public String getOption( final String selectValue,final boolean seqFlag ) {
160                    return getOption( selectValue, seqFlag, false );
161            }
162    
163            /**
164             * åˆæœŸå€¤ãŒé¸æŠžæ¸ˆã¿ã® é¸æŠžè‚¢(オプション)ã‚’è¿”ã—ã¾ã™ã?
165             * ã“ã?オプションã¯ã€å¼•æ•°ã®å€¤ã‚’å?期å?ã¨ã™ã‚‹ã‚ªãƒ—ションタグを返ã—ã¾ã™ã?
166             * ã“ã?メソãƒ?ƒ‰ã§ã¯ã€å¼•æ•°ã®useShortLabelãŒtrueã«æŒ?®šã•れãŸå ´åˆã«ã€ãƒ©ãƒ™ãƒ«(短)ã‚’ã?ースã¨ã—ãŸ
167             * ãƒ??ルãƒãƒƒãƒ—表示を行ã„ã¾ã™ã?
168             *
169             * @param   selectValue  é¸æŠžã•れã¦ã?‚‹å€¤
170             * @param   seqFlag  シーケンスアクセス機è? [true:ON/false:OFF]
171             * @param   useShortLabel ラベル(短)ã‚’ã?ースã¨ã—ãŸã‚ªãƒ—ション表示を行ã†ã‹ã©ã?‹ã€?未使用)
172             *
173             * @return  オプションタグ
174             * @see     #getOption( String, boolean )
175             */
176            public String getOption( final String selectValue,final boolean seqFlag, final boolean useShortLabel ) {
177                    // マッãƒã™ã‚‹ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’探ã™ã?
178                    int selected = CACHE.indexOf( "\"" + selectValue + "\"" );
179    
180                    if( selected < 0 ) {
181                            if( selectValue != null && selectValue.length() > 0 ) {
182                                    String errMsg = "年月日ç¯?›²ã«å­˜åœ¨ã—ãªã??ãŒæŒ‡å®šã•れã¾ã—ãŸã€?
183                                                            + " value=[" + selectValue + "]"
184                                                            + HybsSystem.CR + ST_ED_STEP ;
185                                    LogWriter.log( errMsg );
186                            }
187                            return CACHE;
188                    }
189                    else {
190                            // "年月日" æ–?­—å?ã®ä½ç½®ãŒã?selected ãªã®ã§ã€å¹´æœˆæ—¥ã®æ–?­—æ•°?‹ï¼’ã¾ã§ãŒã?å‰åŠéƒ¨åˆ?«ãªã‚‹ã?(å¹´æœˆæ—¥ã®æ–?­—æ•°ã¯?˜å›ºå®šã?ã¯ã?
191                            int indx = selected + selectValue.length() + 2 ;
192    
193                            StringBuilder buf = new StringBuilder( HybsSystem.BUFFER_MIDDLE );
194                            // 3.6.0.6 (2004/10/22) シーケンスアクセス機è?を指定ã™ã‚?seqFlag ã‚’å°Žå?
195                            if( seqFlag ) {
196                                    buf.append( "<option value=\"" ).append( selectValue ).append( "\"" );
197                            }
198                            else {
199                                    buf.append( CACHE.substring( 0,indx ) );
200                            }
201                            buf.append( " selected=\"selected\"" );
202                            buf.append( CACHE.substring( indx ) );
203                            return buf.toString() ;
204                    }
205            }
206    
207            /**
208             * åˆæœŸå€¤ãŒé¸æŠžæ¸ˆã¿ã® é¸æŠžè‚¢(オプション)ã‚’è¿”ã—ã¾ã™ã?
209             * ã“ã?オプションã¯ã€å¼•æ•°ã®å€¤ã‚’å?期å?ã¨ã™ã‚‹ã‚ªãƒ—ションタグを返ã—ã¾ã™ã?
210             * ※ ã“ã?クラスã§ã¯å®Ÿè£?•れã¦ã?¾ã›ã‚“ã€?
211             *
212             * @og.rev 2.1.0.1 (2002/10/17) é¸æŠžãƒªã‚¹ãƒˆã‚’ã€æ­£æ–¹å‘ã«ã—ã‹é¸ã¹ãªã?‚ˆã?«ã™ã‚‹ sequenceFlag ã‚’å°Žå?ã™ã‚‹
213             * @og.rev 3.8.6.0 (2006/09/29) useLabel 属æ? 追åŠ?
214             *
215             * @param   name         ラジオ㮠name
216             * @param   selectValue  é¸æŠžã•れã¦ã?‚‹å€¤
217             * @param   useLabel     ãƒ©ãƒ™ãƒ«è¡¨ç¤ºã®æœ‰ç„¡ [true:æœ?false:ç„¡]
218             *
219             * @return  オプションタグ
220             */
221            public String getRadio( final String name,final String selectValue,final boolean useLabel ) {
222                    String errMsg = "ã“ã?クラスã§ã¯å®Ÿè£?•れã¦ã?¾ã›ã‚“ã€?;
223                    throw new UnsupportedOperationException( errMsg );
224            }
225    
226            /**
227             * åˆæœŸå€¤ãŒé¸æŠžæ¸ˆã¿ã® é¸æŠžè‚¢(オプション)ã‚’è¿”ã—ã¾ã™ã?
228             * ã“ã?オプションã¯ã€å¼•æ•°ã®å€¤ã‚’å?期å?ã¨ã™ã‚‹ã‚ªãƒ—ションタグを返ã—ã¾ã™ã?
229             * ※ ã“ã?クラスã§ã¯å®Ÿè£?•れã¦ã?¾ã›ã‚“ã€?
230             *
231             * @param   selectValue  é¸æŠžã•れã¦ã?‚‹å€¤
232             *
233             * @return  オプションタグ
234             */
235            public String getRadioLabel( final String selectValue ) {
236                    String errMsg = "ã“ã?クラスã§ã¯å®Ÿè£?•れã¦ã?¾ã›ã‚“ã€?;
237                    throw new UnsupportedOperationException( errMsg );
238            }
239    
240            /**
241             * é¸æŠžè‚¢(value)ã«å¯¾ã™ã‚‹ãƒ©ãƒ™ãƒ«ã‚’è¿”ã—ã¾ã™ã?
242             * é¸æŠžè‚¢(value)ãŒã?存在ã—ãªã‹ã£ãŸå?åˆã?ã€?¸æŠžè‚¢ãã?ã‚‚ã?ã‚’è¿”ã—ã¾ã™ã?
243             * getValueLabel( XX ) ã¯ã€getValueLabel( XX,false ) ã¨åŒã˜ã§ã™ã?
244             *
245             * @param   selectValue é¸æŠžè‚¢ã®å€¤
246             *
247             * @return  é¸æŠžè‚¢ã®ãƒ©ãƒ™ãƒ«
248             * @see     #getValueLabel( String,boolean )
249             */
250            public String getValueLabel( final String selectValue ) {
251                    return getValueLabel( selectValue,false );
252            }
253    
254            /**
255             * é¸æŠžè‚¢(value)ã«å¯¾ã™ã‚‹ãƒ©ãƒ™ãƒ«ã‚’è¿”ã—ã¾ã™ã?
256             * é¸æŠžè‚¢(value)ãŒã?存在ã—ãªã‹ã£ãŸå?åˆã?ã€?¸æŠžè‚¢ãã?ã‚‚ã?ã‚’è¿”ã—ã¾ã™ã?
257             * ã“ã?メソãƒ?ƒ‰ã§ã¯ã€çŸ­ç¸®ãƒ©ãƒ™ãƒ«ã‚’è¿”ã™ã‹ã©ã?‹ã‚’指定ã™ã‚‹ãƒ•ラグを指定ã—ã¾ã™ã?
258             * getValueLabel( XX,false ) ã¯ã€getValueLabel( XX ) ã¨åŒã˜ã§ã™ã?
259             *
260             * @og.rev 4.0.0.0 (2005/11/30) を追�
261             *
262             * @param       selectValue     é¸æŠžè‚¢ã®å€¤
263             * @param       flag    短縮ラベルã‚?[true:使用ã™ã‚‹/false:ã—ãªã„]
264             *
265             * @return  é¸æŠžè‚¢ã®ãƒ©ãƒ™ãƒ«
266             * @see     #getValueLabel( String )
267             */
268            public String getValueLabel( final String selectValue,final boolean flag ) {
269                    // é¸æŠžè‚¢ãŒã‚ã‚ã†ã¨ãªã‹ã‚ã?¨ã€ãƒ•ォーマット変æ›ã—ã¦å€¤ã‚’è¿”ã™ã€?
270    
271                    Calendar cal = HybsDateUtil.getCalendar( selectValue );
272    
273                    if( flag && tipsFmt != null ) {
274                            return "<span title=\"" + tipsFmt.format( cal.getTime() ) + "\">" + lblFmt.format( cal.getTime() ) + "</span>";
275                    }
276                    else {
277                            return lblFmt.format( cal.getTime() );
278                    }
279            }
280    
281            /**
282             * マルãƒã?キーセレクトを使用ã™ã‚‹ã‹ã©ã?‹ã‚’è¿”ã—ã¾ã™ã?
283             * true?šä½¿ç”¨ã™ã‚‹ã€‚false:使用ã—ãªã?ã§ã™ã?
284             * ãŸã ã—ã?実際ã«ä½¿ç”¨ã™ã‚‹ã‹ã©ã?‹ã¯ã€HTMLå‡ºåŠ›æ™‚ã«æ±ºã‚ã‚‹ã“ã¨ãŒå?æ¥ã¾ã™ã?
285             * ã“ã“ã§ã¯ã€USE_MULTI_KEY_SELECT ã?true ã§ã€USE_SIZE(=20)以上ã?å ´åˆã«
286             * true ã‚’è¿”ã—ã¾ã™ã?
287             *
288             * @og.rev 3.5.5.7 (2004/05/10) æ–°è¦ä½œæ?
289             *
290             * @return  é¸æŠžãƒªã‚¹ãƒˆã§ã€ã?ルãƒã?キーセレクトを使用ã™ã‚‹ã‹ã©ã?‹(true:使用ã™ã‚‹)(false固å®?
291             */
292            public boolean useMultiSelect() {
293                    return false;
294            }
295    
296            /**
297             * オブジェクトã?キャãƒ?‚·ãƒ¥ãŒæ™‚é–“å?れã‹ã©ã?‹ã‚’è¿”ã—ã¾ã™ã?
298             * キャãƒ?‚·ãƒ¥ãŒæ™‚é–“å?ã‚?無効)ã§ã‚れã°ã€true ã‚’ã?有効ã§ã‚れã°ã€?
299             * false ã‚’è¿”ã—ã¾ã™ã?
300             *
301             * @og.rev 4.0.0.0 (2005/01/31) æ–°è¦ä½œæ?
302             *
303             * @return  キャãƒ?‚·ãƒ¥ãŒæ™‚é–“å?れãªã‚?true
304             */
305            public boolean isTimeOver() {
306                    return ( System.currentTimeMillis() > maxCacheTime ) ;
307            }
308    }