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    import org.opengion.hayabusa.db.DBTableModel;
021    import org.opengion.hayabusa.db.DBColumn;
022    import org.opengion.hayabusa.db.Query;
023    import org.opengion.hayabusa.db.QueryFactory;
024    import org.opengion.fukurou.util.XHTMLTag;
025    import org.opengion.fukurou.util.Attributes;
026    import org.opengion.fukurou.db.Transaction;
027    import org.opengion.fukurou.db.TransactionReal;
028    
029    import static org.opengion.fukurou.util.StringUtil.nval ;
030    
031    import java.io.ObjectOutputStream;
032    import java.io.ObjectInputStream;
033    import java.io.IOException;
034    
035    /**
036     * プルãƒ?‚¦ãƒ³ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã®é¸æŠžé?目をSELECTæ–??çµæžœã‹ã‚‰ä½œæ?ã™ã‚‹ã‚¿ã‚°ã§ã™ã?
037     *
038     * 基本çš?«ã¯ã€?½‘ueryã‚¿ã‚°ã¨åŒã˜ä½¿ã?–¹ã‚’ã—ã¾ã™ã?
039     * ã“ã?オブジェクトã«ã€?queryId を与ãˆã‚‹ã“ã¨ã«ã‚ˆã‚Šã€queryId ã«å¯¾å¿œã—ã?Queryオブジェクãƒ?
040     * (ã®ã‚µãƒ–クラスã®ã‚ªãƒ–ジェクãƒ?ãŒä½œæ?ã•れã¾ã™ã?
041     * ã“ã“ã§æŒ?®šã™ã‚‹SELECTæ–??ã€ã?SELECT KEYã€LABEL1ã€LABEL2ã€?½¥?¥?¥ FROM TABLE ?¥?¥?¥ã€å½¢å¼?ã‚?
042     * ã—ã¦ã?‚‹å¿?¦ãŒã‚りã¾ã™ã?特別ãªã‚±ãƒ¼ã‚¹ã¨ã—ã¦ã€ã?SELECT KEY FROM TABLE ?¥?¥?¥ã€å½¢å¼ã?å ´åˆã?ã€?
043     * LABEL ã« KEY ã?使用ã•れã¾ã™ã?
044     * SystemData ã® USE_SQL_INJECTION_CHECK ã?true ã‹ã?quotCheck 属æ?ã?true ã®å ´åˆã?ã€?
045     * ?³?±?¬ã‚¤ãƒ³ã‚¸ã‚§ã‚¯ã‚·ãƒ§ãƒ³å¯¾ç­–用ã®ã‚¯ã‚©ãƒ¼ãƒ?‚£ã‚·ãƒ§ãƒ³ãƒã‚§ãƒ?‚¯ã‚’行ã„ã¾ã™ã?リクエスト引数ã«
046     * クォーãƒ?‚£ã‚·ãƒ§ãƒ³(')ãŒå«ã¾ã‚Œã‚‹ã¨ã€ã‚¨ãƒ©ãƒ¼ã«ãªã‚Šã¾ã™ã?
047     * åŒæ§˜ã«USE_XSS_CHECKãŒtrueã‹ã?xssCheck属æ?ãŒtrueã®å ´åˆã?ã€?
048     * クロスサイトススクリプティング(XSS)対策ã?ãŸã‚less/greater than signã®ãƒã‚§ãƒ?‚¯ã‚’行ã„ã¾ã™ã?
049     *
050     * ※ ã“ã?ã‚¿ã‚°ã¯ã€Transaction ã‚¿ã‚°ã®å¯¾è±¡ã§ã™ã?
051     *
052     * @og.formSample
053     * â—å½¢å¼ï¼?
054     *     <og:queryOption >
055     *          SELECTæ–?
056     *     </og:queryOption >
057     * â—body?šã‚ã‚?
058     *
059     * â—Tag定義??
060     *   <og:queryOption
061     *       value              ã€TAG】Optionã®åˆæœŸå€¤ã§é¸ã°ã‚Œã‚‹å€¤ã‚’指定ã—ã¾ã?
062     *       separator          ã€TAG】è¤?•°ã®ãƒ©ãƒ™ãƒ«ã‚’åˆæˆã™ã‚‹ã¨ãã«ä½¿ç”¨ã™ã‚‹é ?›®åŒºåˆ?‚Šæ–?­—ã‚’ã‚»ãƒ?ƒˆã—ã¾ã?åˆæœŸå€¤:スペã?ス)
063     *       defaultVal         ã€TAG】value値ãŒNULLã®å ´åˆã«ä½¿ç”¨ã•れるå?期å?を設定ã—ã¾ã?
064     *       language           ã€TAG】タグå†?ƒ¨ã§ä½¿ç”¨ã™ã‚‹è¨?ªžã‚³ãƒ¼ãƒ‰[ja/en/zh/…]を指定ã—ã¾ã?
065     *       quotCheck          ã€TAG】リクエスト情報㮠クォーãƒ?‚£ã‚·ãƒ§ãƒ³(') 存在ãƒã‚§ãƒ?‚¯ã‚’実施ã™ã‚‹ã‹ã©ã?‹[true/false]を設定ã—ã¾ã?(åˆæœŸå€¤:USE_SQL_INJECTION_CHECK[=true])
066     *       dbid               ã€TAGã€?通常ã¯ä½¿ã?¾ã›ã‚“)Queryオブジェクトを作æ?ã™ã‚‹æ™‚ã?DB接続IDを指定ã—ã¾ã?
067     *       addKey             ã€TAG】é?ç›®ãŒä¸?¤ã?‘ã®å ´åˆã??—ï¾ï¾žï¾™ï¾˜ï½¿?°?½ã«ã€ã‚­ãƒ¼æƒ??を追åŠ?™ã‚‹ã‹ã©ã?‹ã‚’指定ã—ã¾ã?åˆæœŸå€¤:false)
068     *       classUseNo         ã€TAG】オプションã«è¿½åŠ?™ã‚?class 属æ?㮠カラãƒ?•ªå·ã‚’指定ã—ã¾ã?
069     *       groupUseNo         ã€TAG】オプションã®ã‚°ãƒ«ãƒ¼ãƒ—化を行ã†ã‚«ãƒ©ãƒ?•ªå·ã‚’指定ã—ã¾ã?
070     *       titleUseNo         ã€TAG】オプションã«è¿½åŠ?™ã‚?title 属æ?㮠カラãƒ?•ªå·ã‚’指定ã—ã¾ã?
071     *       xssCheck           ã€TAG】リクエスト情報㮠HTMLTagé–‹å§?終äº?–‡å­?><) 存在ãƒã‚§ãƒ?‚¯ã‚’実施ã™ã‚‹ã‹ã©ã?‹[true/false]を設定ã—ã¾ã?(åˆæœŸå€¤:USE_XSS_CHECK[=true])
072     *       caseKey            ã€TAG】ã“ã®ã‚¿ã‚°è‡ªä½“を利用ã™ã‚‹ã‹ã©ã?‹ã®æ¡ä»¶ã‚­ãƒ¼ã‚’指定ã—ã¾ã?åˆæœŸå€¤:null)
073     *       caseVal            ã€TAG】ã“ã®ã‚¿ã‚°è‡ªä½“を利用ã™ã‚‹ã‹ã©ã?‹ã®æ¡ä»¶å€¤ã‚’指定ã—ã¾ã?åˆæœŸå€¤:null)
074     *       debug              ã€TAG】デãƒãƒƒã‚°æƒ??ã‚’å?力ã™ã‚‹ã‹ã©ã?‹[true/false]を指定ã—ã¾ã?åˆæœŸå€¤:false)
075     *   >   ... Body ...
076     *   </og:queryOption>
077     *
078     * â—使用ä¾?
079     *     <og:select name="CDC" >
080     *         <og:queryOption>
081     *                 select NOSYN,NOSYN,NMSYN from DB01 ORDER BY 1
082     *         </og:queryOption>
083     *     </og:select>
084     *
085     *     <og:select name="CDC" >                é¸æŠžé?ç›®ã®ä¸?•ªä¸Šã«ç©ºç™½ã‚’ã‚»ãƒ?ƒˆã—ãŸã?¨ãoptionã‚¿ã‚°ã‚’çµ?ˆã›ã‚‹ã“ã¨ã‚‚å¯èƒ½ã§ã™ã?
086     *         <og:option msg="" />               åˆæœŸå€¤ã‚’設定ã—ãŸã„ã¨ãã?value属æ?を使ã?¾ã™ã?
087     *         <og:queryOption value="61200" separator=":" >
088     *                 select CDBK,CDBK,NMBK from DB02 ORDER BY 1
089     *         </og:queryOption>
090     *     </og:select>
091     *
092     * @og.group é¸æŠžãƒ‡ãƒ¼ã‚¿åˆ¶å¾¡
093     *
094     * @version  4.0
095     * @author   Kazuhiko Hasegawa
096     * @since    JDK5.0,
097     */
098    public class QueryOptionTag extends CommonTagSupport {
099            //* ã“ã?プログラãƒ??VERSIONæ–?­—å?を設定ã—ã¾ã™ã?       {@value} */
100            private static final String VERSION = "5.3.8.0 (2011/08/01)" ;
101    
102            private static final long serialVersionUID = 538020110801L ;
103    
104            private transient DBTableModel  table           = null;
105            private String  selValue        = null;
106            private String  defaultVal      = null;
107            // 4.0.0.0 (2007/10/10) dbid ã®åˆæœŸå€¤ã‚’ã?"DEFAULT" ã‹ã‚‰ null ã«å¤‰æ›´
108    //      private String  dbid            = "DEFAULT";
109            private String  dbid            = null;
110            private String  sql                     = null;
111            private String  separator       = " ";          // é ?›®åŒºåˆ?‚Šæ–?­?
112            private boolean quotCheck       = HybsSystem.sysBool( "USE_SQL_INJECTION_CHECK" );      // 4.0.0 (2005/08/31)
113            private int             classUseNo      = -1;   // 3.8.5.2 (2006/06/09) オプションã«è¿½åŠ?™ã‚‹ã‚¯ãƒ©ã‚¹å±žæ?
114            private int             groupUseNo      = -1;   // 3.8.5.2 (2006/06/09) キーブレイク時ã«è¿½åŠ?™ã‚‹ã‚°ãƒ«ãƒ¼ãƒ—æ–‡å­?
115            private boolean addKey          = false;                // 4.0.0 (2006/11/15) é ?›®ä¸?¤ã®ã¨ãã«?—ï¾ï¾žï¾™ï¾˜ï½¿?°?½è¡¨ç¤ºæ™‚ã«ã‚­ãƒ¼ã‚‚付加ã™ã‚‹ã€?
116            private int             titleUseNo              = -1;   // 4.3.8.0 (2009/08/01) オプションã®title属æ?
117            private boolean xssCheck        = HybsSystem.sysBool( "USE_XSS_CHECK" );        // 5.0.0.2 (2009/09/15)
118            private String  rawSql          = null; // 5.1.7.0 (2010/06/01) 動的プルãƒ?‚¦ãƒ³å®Ÿè£?¦‹ç›´ã?
119    
120            /**
121             * Taglibã®é–‹å§‹ã‚¿ã‚°ãŒè¦‹ã¤ã‹ã£ãŸã¨ãã«å‡¦ç?™ã‚?doStartTag() ã‚?オーãƒã?ライドã—ã¾ã™ã?
122             *
123             * @og.rev 5.2.2.0 (2010/11/01) caseKey ã€caseVal 属æ?対å¿?
124             *
125             * @return      後続å?ç??æŒ?¤º( EVAL_BODY_BUFFERED )
126             */
127            @Override
128            public int doStartTag() {
129                    // 5.2.2.0 (2010/11/01) caseKey ã€caseVal 属æ?対å¿?
130                    if( useTag() ) {
131                            return( EVAL_BODY_BUFFERED );   // Body を評価ã™ã‚‹ã€? extends BodyTagSupport æ™?
132                    }
133                    return ( SKIP_BODY );                           // Body を評価ã—ãªã?
134            }
135    
136            /**
137             * Taglibã®ã‚¿ã‚°æœ¬ä½“を処ç?™ã‚?doAfterBody() ã‚?オーãƒã?ライドã—ã¾ã™ã?
138             *
139             * @og.rev 3.1.1.0 (2003/03/28) ボディã®å†?®¹ã‚’å–å¾—ã™ã‚‹å?ç?‚’ã€CommonTagSupport ã§è¡Œã†ã€?
140             * @og.rev 3.6.0.8 (2004/11/19) エラー発生時ã«ç¢ºå®Ÿã«ãƒªãƒªãƒ¼ã‚¹ã•れるよã?« try finally 追åŠ?
141             * @og.rev 3.7.1.0 (2005/04/26) DBTableModel ãŒã™ã§ã«ã‚»ãƒ?ƒˆã•れã¦ã?‚‹å ´åˆã?ã€SQL処ç?¸è¦ã?
142             * @og.rev 4.0.0.0 (2005/01/31) lang â‡?ResourceManager ã¸å¤‰æ›´
143             * @og.rev 4.0.0.0 (2005/08/31) useQuotCheck() ã«ã‚ˆã‚‹?³?±?¬ã‚¤ãƒ³ã‚¸ã‚§ã‚¯ã‚·ãƒ§ãƒ³å¯¾ç­?
144             * @og.rev 3.8.6.3 (2006/11/30) SQL æ–??å‰å¾Œã?スペã?スをå–り除ãã¾ã™ã?
145             * @og.rev 3.8.7.0 (2006/12/15) アクセスログå–å¾—ã?為,ApplicationInfoオブジェクトを設å®?
146             * @og.rev 4.3.6.0 (2009/04/01) EventColumn対�
147             * @og.rev 5.0.0.5 (2009/08/28) XSS対�
148             * @og.rev 5.1.7.0 (2010/06/01) 動的プルãƒ?‚¦ãƒ³å®Ÿè£?¦‹ç›´ã?
149             * @og.rev 5.1.9.0 (2010/08/01) TransactionTag 対応ã?上ä½ã« TransactionTag ãŒã‚れã?ã€ãã“ã‹ã‚‰Connection をもらã†ã€?
150             * @og.rev 5.3.7.0 (2011/07/01) TransactionReal ã®å¼•数変更
151             * @og.rev 5.3.8.0 (2011/08/01) Transaction発生ç®?‰€ã§close()
152             *
153             * @return      後続å?ç??æŒ?¤º(SKIP_BODY)
154             */
155            @Override
156            public int doAfterBody() {
157                    // 3.7.1.0 (2005/04/26) DBTableModel ãŒã™ã§ã«ã‚»ãƒ?ƒˆã•れã¦ã?‚‹å ´åˆã?ã€SQL処ç?¸è¦ã?
158                    if( table != null ) { return(SKIP_BODY); }
159    
160                    // 4.0.0 (2005/08/31) useQuotCheck() ã«ã‚ˆã‚‹?³?±?¬ã‚¤ãƒ³ã‚¸ã‚§ã‚¯ã‚·ãƒ§ãƒ³å¯¾ç­?
161                    useQuotCheck( quotCheck );
162                    // 5.0.0.2 (2009/09/15) XSS対�
163                    useXssCheck( xssCheck );
164    
165                    sql = getBodyString().trim();
166    //              String rawsql = getBodyRawString().trim(); // 4.3.6.0 生ã?SQLã‚’ä¿æŒ
167                    rawSql = getBodyRawString().trim();
168    
169                    // 4.3.6.0 (2009/04/01) ã‚»ãƒ?‚·ãƒ§ãƒ³ã¸ã®SQLæ–?™»éŒ²
170                    // 5.1.7.0 (2010/06/01) 動的プルãƒ?‚¦ãƒ³å®Ÿè£?¦‹ç›´ã?
171    //              String[] selectVals = getEventColumn(); // 親タグã‹ã‚‰ã‚¤ãƒ™ãƒ³ãƒˆã‚«ãƒ©ãƒ?¨­å®šã‚’å–ã‚‹
172    //              if( selectVals[0] != null && selectVals[0].length() > 0 ){
173    //                      addEventColumnSQL( selectVals[1], rawsql );
174    //              }
175    
176                    Query query = QueryFactory.newInstance();               // 4.0.0 (2005/01/31)
177                    Transaction tran = null;
178                    try {
179                            // 5.1.9.0 (2010/08/01) TransactionTag 対�
180    //                      final Transaction tran ;
181                            TransactionTag tranTag = (TransactionTag)findAncestorWithClass( this,TransactionTag.class );
182                            if( tranTag == null ) {
183    //                              tran = new TransactionReal( dbid,getApplicationInfo() );
184                                    tran = new TransactionReal( getApplicationInfo() );             // 5.3.7.0 (2011/07/01) 引数変更
185                            }
186                            else {
187                                    tran = tranTag.getTransaction();
188                            }
189                            query.setTransaction( dbid,tran );      // 5.1.9.0 (2010/08/01) TransactionTag 対�
190    
191    //                      query.setConnectionID( dbid );
192                            query.setResourceManager( getResource() );      // 4.0.0 (2005/01/31)
193    
194                            query.setStatement( sql );
195    //                      query.setApplicationInfo( getApplicationInfo() );       // 3.8.7.0 (2006/12/15)
196                            query.execute();
197    
198                            table = query.getDBTableModel();
199    
200                            // 4.0.0 (2005/11/30) æ¤œç´¢çµæžœã®ä»¶æ•°ã‚’ã?"DB.COUNT" キーã§ãƒªã‚¯ã‚¨ã‚¹ãƒˆã«ã‚»ãƒ?ƒˆã™ã‚‹ã€?
201                    }
202                    finally {
203    //                      if( query != null ) { query.close(); }
204                            QueryFactory.close( query );
205                            if( tran != null ) { tran.close(); }            // 5.3.8.0 (2011/08/01) Transaction発生ç®?‰€ã§close()
206                    }
207                    return(SKIP_BODY);
208            }
209    
210            /**
211             * Taglibã®çµ‚äº?‚¿ã‚°ãŒè¦‹ã¤ã‹ã£ãŸã¨ãã«å‡¦ç?™ã‚?doEndTag() ã‚?オーãƒã?ライドã—ã¾ã™ã?
212             *
213             * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応ã?release2() ã‚?doEndTag()ã§å‘¼ã¶ã€?
214             * @og.rev 3.3.2.0 (2003/07/07) defaultVal 属æ?ã®è¿½åŠ??
215             * @og.rev 3.5.4.0 (2003/11/25) selVal 属æ?を追åŠ??
216             * @og.rev 5.0.2.0 (2009/11/01) è¤?•°ãƒ‘ラメーターã®é¸æŠžã«å¯¾å¿?
217             * @og.rev 5.1.7.0 (2010/06/01) 動的プルãƒ?‚¦ãƒ³å®Ÿè£?¦‹ç›´ã?
218             * @og.rev 5.2.2.0 (2010/11/01) caseKey ã€caseVal 属æ?対å¿?
219             *
220             * @return      後続å?ç??æŒ?¤º
221             */
222            @Override
223            public int doEndTag() {
224                    debugPrint();           // 4.0.0 (2005/02/28)
225                    // 5.2.2.0 (2010/11/01) caseKey ã€caseVal 属æ?対å¿?
226                    if( useTag() ) {
227                            SelectTag select = (SelectTag)findAncestorWithClass( this,SelectTag.class );
228                            if( select == null ) {
229                                    String errMsg = "ã“ã?ã‚¿ã‚°ã¯ã€SelectTag ã®BODY ã«è¨˜è¿°ã™ã‚‹å¿?¦ãŒã‚りã¾ã™ã?";
230                                    throw new HybsSystemException( errMsg );
231                            }
232                            String selVal = nval( select.getValue(),defaultVal );   // 3.5.4.0 (2003/11/25)
233            //              selValue = nval( selValue,selVal );                                             // 3.5.4.0 (2003/11/25)
234                            selValue = "|" + nval( selValue,selVal ) + "|";                 // 5.0.2.0 (2009/11/01)
235                            makeLabel( select );
236    
237                            // 5.1.7.0 (2010/06/01) 動的プルãƒ?‚¦ãƒ³å®Ÿè£?¦‹ç›´ã?
238                            select.setRawParam( rawSql );
239                    }
240                    return(EVAL_PAGE);
241            }
242    
243            /**
244             * タグリブオブジェクトをリリースã—ã¾ã™ã?
245             * キャãƒ?‚·ãƒ¥ã•れã¦å†åˆ©ç”¨ã•れるã?ã§ã€ãƒ•ィールドã?åˆæœŸè¨­å®šã‚’行ã„ã¾ã™ã?
246             *
247             * @og.rev 2.0.0.4 (2002/09/27) カスタãƒ?‚¿ã‚°ã® release() メソãƒ?ƒ‰ã‚’ã?追åŠ?
248             * @og.rev 3.0.1.0 (2003/03/03) セパレーターを指定ã§ãる様ã«å¤‰æ›´ã€?
249             * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応ã?release2() ã‚?doEndTag()ã§å‘¼ã¶ã€?
250             * @og.rev 3.3.2.0 (2003/07/07) defaultVal 属æ?ã®è¿½åŠ??
251             * @og.rev 3.8.5.2 (2006/06/09) classUseNo , groupUseNo 属æ?ã®è¿½åŠ??
252             * @og.rev 4.0.0.0 (2005/08/31) quotCheck , addKey 属æ?ã®è¿½åŠ?
253             * @og.rev 4.0.0.0 (2007/10/10) dbid ã®åˆæœŸå€¤ã‚’ã?"DEFAULT" ã‹ã‚‰ null ã«å¤‰æ›´
254             * @og.rev 5.1.7.0 (2010/06/01) 動的プルãƒ?‚¦ãƒ³å®Ÿè£?¦‹ç›´ã?
255             *
256             */
257            @Override
258            protected void release2() {
259                    super.release2();
260                    table           = null;
261                    selValue        = null;
262                    defaultVal      = null;
263    //              dbid            = "DEFAULT";
264                    dbid            = null;
265                    sql                     = null;
266                    separator       = " ";
267                    classUseNo      = -1;   // 3.8.5.2 (2006/06/09) オプションã«è¿½åŠ?™ã‚‹ã‚¯ãƒ©ã‚¹å±žæ?
268                    groupUseNo      = -1;   // 3.8.5.2 (2006/06/09) キーブレイク時ã«è¿½åŠ?™ã‚‹ã‚°ãƒ«ãƒ¼ãƒ—æ–‡å­?
269                    quotCheck       = HybsSystem.sysBool( "USE_SQL_INJECTION_CHECK" );      // 4.0.0 (2005/08/31)
270                    addKey          = false;                // 4.0.0 (2006/11/15) é ?›®ä¸?¤ã®ã¨ãã«?—ï¾ï¾žï¾™ï¾˜ï½¿?°?½è¡¨ç¤ºæ™‚ã«ã‚­ãƒ¼ã‚‚付加ã™ã‚‹ã€?
271                    titleUseNo              = -1;
272                    xssCheck        = HybsSystem.sysBool( "USE_XSS_CHECK" );        // 5.0.0.2 (2009/09/15)
273                    rawSql          = null; // 5.1.7.0 (2010/06/01) 動的プルãƒ?‚¦ãƒ³å®Ÿè£?¦‹ç›´ã?
274            }
275    
276            /**
277             * DBTableModelã‚’ã‚»ãƒ?ƒˆã—ã¾ã™ã?
278             *
279             * サブクラスよりã€DBTableModelã‚’ã‚»ãƒ?ƒˆã™ã‚‹ã®ã«ä½¿ã?¾ã™ã?
280             *
281             * @og.rev 3.7.1.0 (2005/04/26) æ–°è¦è¿½åŠ?
282             *
283             * @param       table   DBTableModelオブジェク�
284             */
285            protected void setTableModel( final DBTableModel table ) {
286                    this.table = table ;
287            }
288    
289            /**
290             * オプションを作æ?ã—ã¾ã™ã?
291             *
292             * DBTableModel ã®?‘番目ã®å€¤ã‚?"value" ã«ã€ãれ以é™ã‚’æ–?­—å?ã‚’é?çµã•ã›ã¦
293             * BODY属æ? ã«ç™»éŒ²ã™ã‚‹Optionを作æ?ã—ã¾ã™ã?
294             *
295             * @og.rev 3.0.1.0 (2003/03/03) 『SELECT KEY FROM TABLE ?¥?¥?¥ã€å½¢å¼ã?å ´åˆã?ã€LABEL ã« KEY を使用ã€?
296             * @og.rev 3.8.0.9 (2005/10/17) è¤?•°é¸æŠžå¯èƒ½æ™‚ã«å…¨é¸æŠžã‚’設定ã™ã‚‹ã?
297             * @og.rev 3.8.5.2 (2006/06/09) classUseNo 属æ?㨠groupUseNo 属æ?を追åŠ?
298             * @og.rev 3.8.9.2 (2007/07/28) グループã¨ã€ã‚¯ãƒ©ã‚¹ã®è¨­å®šæ–¹æ³•ã?ãƒã‚°ä¿®æ­£
299             * @og.rev 4.3.8.0 (2009/08/01) titleUseNo属æ?追åŠ?
300             * @og.rev 5.0.2.0 (2009/11/01) è¤?•°ãƒ‘ラメーターã®é¸æŠžã«å¯¾å¿?
301             *
302             * @param   select SelectTagオブジェク�
303             */
304            private void makeLabel( final SelectTag select ) {
305                    boolean multipleAll = select.isMultipleAll();   // 3.8.0.9 (2005/10/17)
306                    int rowCnt = table.getRowCount();               // 3.5.5.7 (2004/05/10)
307    
308                    String bkGroupKey = "";
309                    String grpLabel ;
310                    for( int row=0; row<rowCnt; row++ ) {
311                            // 3.8.5.2 (2006/06/09) groupUseNo 属æ?
312                            if( groupUseNo >= 0 ) {
313                                    String groupKey = table.getValue( row,groupUseNo );
314                                    grpLabel = getRendererValue( row,groupUseNo );
315                                    if( !bkGroupKey.equals( groupKey ) ) {          // キーブレイク
316                                            // 3.8.9.2 (2007/07/28) グループã¨ã€ã‚¯ãƒ©ã‚¹ã®è¨­å®šæ–¹æ³•ã?ãƒã‚°ä¿®æ­£
317    //                                      bkGroupKey = groupKey;
318    //                                      if( row != 0 ) { select.addOption( "</optgroup>" ); }
319    //                                      select.addOption( "<optgroup label=\"" + grpLabel + "\">" );
320    
321                                            if( ! "".equals( bkGroupKey ) ) {
322                                                    select.addOption( "</optgroup>" );
323                                            }
324                                            if( ! "".equals( groupKey ) ) {
325                                                    select.addOption( "<optgroup label=\"" + grpLabel + "\">" );
326                                            }
327                                            bkGroupKey = groupKey;
328                                    }
329                            }
330    
331                            Attributes attri = new Attributes();
332                            String value = table.getValue( row,0 );
333                            attri.set( "value", value );
334    
335                            // 5.0.2.0 (2009/11/01)
336    //                      if( ( selValue != null && selValue.equals( value ) ) || multipleAll ) {
337                            if( ( selValue != null && selValue.length() > 0 && selValue.indexOf( "|" + value + "|" ) >= 0 ) || multipleAll ) {
338                                    attri.set( "selected", "selected" );
339                            }
340    
341                            // 3.8.5.2 (2006/06/09) classUseNo 属æ?
342                            if( classUseNo >= 0 ) {
343                                    attri.add( "class", table.getValue( row,classUseNo ) );
344                            }
345    
346                            StringBuilder buf = new StringBuilder( HybsSystem.BUFFER_MIDDLE );
347                            boolean titleFlg = false; // 4.3.8.0 (2009/08/01) title属æ?を付ã‘ã‚‹ã‹ã©ã?‹
348                            if( table.getColumnCount() == 1 ) {
349                                    // é ?›®ãŒä¸?¤ã® queryOption ã§ã¯ã€ãƒ©ãƒ™ãƒ«ãƒªã‚½ãƒ¼ã‚¹ãŒä½¿ç”¨ã•れã¾ã™ã?
350                                    if( addKey ) { buf.append( value ).append( ":" ); }
351                                    buf.append( getResource().getLabel( value ) );
352    
353                                    // 4.3.8.0 (2009/08/01) titleUseNo 属æ? ã‚»ãƒ?ƒˆã•れã¦ã?‚‹å ´åˆã‹ã¤ãƒ©ãƒ™ãƒ«ã¨ç•°ãªã‚‹å?åˆã?title属æ?ã«è¿½åŠ?
354                                    if( titleUseNo >= 0 && !getResource().getLabel( value ).equals( table.getValue( row,titleUseNo ) )) {
355                                            titleFlg = true;
356                                    }
357                            }
358                            else {
359            //                      if( groupUseNo >= 0 ) {
360            //                              buf.append( grpLabel );
361            //                              buf.append( separator );
362            //                      }
363                                    String label = getRendererValue( row,1 );
364                                    buf.append( label );
365            //                      attri.set( "label", label );
366                                    for( int clm=2; clm<table.getColumnCount(); clm++ ) {
367                                            // 4.3.8.0 (2009/08/01) titleUseNo追�
368                                            // if( clm == groupUseNo || clm == classUseNo ) { continue; }
369                                            if( clm == groupUseNo || clm == classUseNo || clm==titleUseNo) { continue; }
370                                            buf.append( separator );
371                                            buf.append( getRendererValue( row,clm ) );
372                                    }
373    
374                                    // 4.3.8.0 (2009/08/01) titleUseNo 属æ? ã‚»ãƒ?ƒˆã•れã¦ã?‚‹å ´åˆã‹ã¤ãƒ©ãƒ™ãƒ«ã¨ç•°ãªã‚‹å?åˆã?title属æ?ã«è¿½åŠ?
375                                    if( titleUseNo >= 0 && !label.equals( table.getValue( row,titleUseNo ) )) {
376                                            titleFlg = true;
377                                    }
378                            }
379    
380                            // 4.3.7.2 (2009/06/22) タイトル属æ?ã‚»ãƒ?ƒˆ
381                            if( titleFlg ){
382                                    attri.add( "title", table.getValue( row,titleUseNo ) );
383                            }
384    
385                            attri.set( "body", buf.toString() );
386                            select.addOption( XHTMLTag.option( attri ) );
387                    }
388    //              if( groupUseNo >= 0 && "".equals( bkGroupKey ) ) {
389                    if( groupUseNo >= 0 && ! "".equals( bkGroupKey ) ) { // 3.8.9.2 (2007/07/28)
390                            select.addOption( "</optgroup>" );
391                    }
392            }
393    
394            /**
395             * ã€TAG】Optionã®åˆæœŸå€¤ã§é¸ã°ã‚Œã‚‹å€¤ã‚’指定ã—ã¾ã™ã?
396             *
397             * @og.tag Optionã®åˆæœŸå€¤ã§é¸ã°ã‚Œã‚‹å€¤ã‚’指定ã—ã¾ã™ã?
398             *
399             * @param   val Optionã®åˆæœŸå€¤ã§é¸ã°ã‚Œã‚‹å€¤
400             */
401            public void setValue( final String val ) {
402                    selValue = getRequestParameter( val );
403            }
404    
405            /**
406             * ã€TAG】value値ãŒNULLã®å ´åˆã«ä½¿ç”¨ã•れるå?期å?を設定ã—ã¾ã™ã?
407             *
408             * @og.tag
409             * value値ãŒNULLã®å ´åˆã«ã€ã“ã®åˆæœŸå€¤ã‚’ã‚»ãƒ?ƒˆã—ã¾ã™ã?
410             *
411             * @og.rev 3.3.2.0 (2003/07/07) defaultVal 属æ?ã®è¿½åŠ??(æ–°è¦ä½œæ?)
412             *
413             * @param       val åˆæœŸå€¤
414             */
415            public void setDefaultVal( final String val ) {
416                    defaultVal = getRequestParameter( val );
417            }
418    
419            /**
420             * ã€TAG】è¤?•°ã®ãƒ©ãƒ™ãƒ«ã‚’åˆæˆã™ã‚‹ã¨ãã«ä½¿ç”¨ã™ã‚‹é ?›®åŒºåˆ?‚Šæ–?­—ã‚’ã‚»ãƒ?ƒˆã—ã¾ã?åˆæœŸå€¤:スペã?ス)ã€?
421             *
422             * @og.tag
423             * åˆæœŸå€¤ã¯ã€ã‚¹ãƒšã?スã§ã™ã?
424             *
425             * @og.rev 3.0.1.0 (2003/03/03) セパレーターを指定ã§ãる様ã«å¤‰æ›´ã€?
426             *
427             * @param   sep é ?›®åŒºåˆ?‚Šæ–?­?
428             */
429            public void setSeparator( final String sep ) {
430                    separator = nval( getRequestParameter( sep ),separator );
431            }
432    
433            /**
434             * ã€TAG】オプションã«è¿½åŠ?™ã‚?class 属æ?㮠カラãƒ?•ªå·ã‚’指定ã—ã¾ã™ã?
435             *
436             * @og.tag
437             * オプションã¯ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ã?スを検索ã—ã¦ä½œæ?ã•れã¾ã™ãŒã€ãã®SQLæ–??カラãƒ?ƒ…å ±ã‚?
438             * 使用ã—㦠オプション㫠class 属æ?を追åŠ?—ã¾ã™ã?
439             * å?‚ªãƒ—ションã«è‰²ã‚’ã¤ã‘ã‚‹å ´åˆã?ã€ã“ã® class 属æ?ã«å¯¾å¿œã™ã‚?CSS ファイルを用æ„ã—ã¾ã™ã?
440             * ã“ã“ã§ã¯ã€class 属æ?ã«ä½¿ç”¨ã™ã‚‹ SQLæ–?? カラãƒ?•ªå·( å…ˆé?ã?0 ) を指定ã—ã¾ã™ã?
441             * 通常ã€ã‚«ãƒ©ãƒ?•ªå·=0 㯠キーæƒ??ã€?1 ã¯ãƒ©ãƒ™ãƒ«æƒ?? ã§ã™ã?2 ã?3 を指定ã—ã¾ã™ã?
442             * åˆæœŸå€¤ã¯ã€ä½¿ç”¨ã—ãªã?-1)ã§ã™ã?
443             *
444             * @og.rev 3.8.5.2 (2006/06/09) æ–°è¦è¿½åŠ?
445             *
446             * @param   no オプションã«è¿½åŠ?™ã‚‹ã‚¯ãƒ©ã‚¹å±žæ?
447             */
448            public void setClassUseNo( final String no ) {
449                    classUseNo = nval( getRequestParameter( no ),classUseNo );
450                    if( classUseNo == 0 || classUseNo == 1 ) {
451                            String errMsg = "通常ã€ã‚«ãƒ©ãƒ?•ªå·=0 㯠キーæƒ??ã€?1 ã¯ãƒ©ãƒ™ãƒ«æƒ?? ã§ã™ã?2 ã?3 を指定ã—ã¦ä¸‹ã•ã??";
452                            throw new HybsSystemException( errMsg );
453                    }
454            }
455    
456            /**
457             * ã€TAG】オプションã®ã‚°ãƒ«ãƒ¼ãƒ—化を行ã†ã‚«ãƒ©ãƒ?•ªå·ã‚’指定ã—ã¾ã™ã?
458             *
459             * @og.tag
460             * オプションã¯ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ã?スを検索ã—ã¦ä½œæ?ã•れã¾ã™ãŒã€ãã®SQLæ–??カラãƒ?ƒ…å ±ã‚?
461             * 使用ã—㦠オプションをグループ化ã—ã¾ã™ã?グループ化㯠optgroupè¦ç´?‚’ブレイク時ã«
462             * 出力ã™ã‚‹äº‹ã§å¯¾å¿œã—ã¾ã™ã?
463             * ã“ã“ã§ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—化ã«ä½¿ç”¨ã™ã‚‹ SQLæ–?? カラãƒ?•ªå·( å…ˆé?ã?0 ) を指定ã—ã¾ã™ã?
464             * 通常ã€ã‚«ãƒ©ãƒ?•ªå·=0 㯠キーæƒ??ã€?1 ã¯ãƒ©ãƒ™ãƒ«æƒ?? ã§ã™ã?2 ã?3 を指定ã—ã¾ã™ã?
465             * åˆæœŸå€¤ã¯ã€ä½¿ç”¨ã—ãªã?-1)ã§ã™ã?
466             *
467             * @og.rev 3.8.5.2 (2006/06/09) æ–°è¦è¿½åŠ?
468             *
469             * @param   no キーブレイク時ã«è¿½åŠ?™ã‚‹ã‚°ãƒ«ãƒ¼ãƒ—æ–‡å­?
470             */
471            public void setGroupUseNo( final String no ) {
472                    groupUseNo = nval( getRequestParameter( no ),groupUseNo );
473                    if( groupUseNo == 0 || groupUseNo == 1 ) {
474                            String errMsg = "通常ã€ã‚«ãƒ©ãƒ?•ªå·=0 㯠キーæƒ??ã€?1 ã¯ãƒ©ãƒ™ãƒ«æƒ?? ã§ã™ã?2 ã?3 を指定ã—ã¦ä¸‹ã•ã??";
475                            throw new HybsSystemException( errMsg );
476                    }
477            }
478    
479            /**
480             * ã€TAG】リクエスト情報㮠クォーãƒ?‚£ã‚·ãƒ§ãƒ³(') 存在ãƒã‚§ãƒ?‚¯ã‚’実施ã™ã‚‹ã‹ã©ã?‹[true/false]を設定ã—ã¾ã?
481             *              (åˆæœŸå€¤:USE_SQL_INJECTION_CHECK[={@og.value org.opengion.hayabusa.common.SystemData#USE_SQL_INJECTION_CHECK}])ã€?
482             *
483             * @og.tag
484             * ?³?±?¬ã‚¤ãƒ³ã‚¸ã‚§ã‚¯ã‚·ãƒ§ãƒ³å¯¾ç­–ã?ä¸?¤ã¨ã—ã¦ã€æš«å®šçš„ã§ã¯ã‚りã¾ã™ãŒã€SQLã®ãƒ‘ラメータã«
485             * æ¸¡ã™æ–‡å­—å?ã«ã‚¯ã‚©ãƒ¼ãƒ?‚£ã‚·ãƒ§ãƒ³(') を許ã•ãªã?¨­å®šã«ã™ã‚Œã°ã€ã‚る程度ã¯é˜²æ­¢ã§ãã¾ã™ã?
486             * 数字タイプã?引数ã«ã¯ã€?or 5=5 ãªã©ã®ã‚¯ã‚©ãƒ¼ãƒ?‚£ã‚·ãƒ§ãƒ³ã‚’使用ã—ãªã?‚³ãƒ¼ãƒ‰ã‚’埋ã‚ã¦ã‚‚ã?
487             * æ•°å­—ãƒã‚§ãƒ?‚¯ã§æ¤œå?å¯èƒ½ã§ã™ã?æ–?­—タイプã?å ´åˆã?ã€å¿?š (')ã‚’ã?ãšã—ã¦ã€?
488             * ' or 'A' like 'A ã®ã‚ˆã†ãªå½¢å¼ã«ãªã‚‹ç‚ºã€?')ãƒã‚§ãƒ?‚¯ã?‘ã§ã‚‚有効ã§ã™ã?
489             * (') ãŒå«ã¾ã‚Œã¦ã?Ÿã‚¨ãƒ©ãƒ¼ã«ã™ã‚‹(true)?ã‹ãƒŽã?ãƒã‚§ãƒ?‚¯ã?false)を指定ã—ã¾ã™ã?
490             * (åˆæœŸå€¤:シスãƒ?ƒ å®šæ•°ã®USE_SQL_INJECTION_CHECK[={@og.value org.opengion.hayabusa.common.SystemData#USE_SQL_INJECTION_CHECK}])ã€?
491             *
492             * @og.rev 4.0.0.0 (2005/08/31) æ–°è¦è¿½åŠ?
493             *
494             * @param   flag クォーãƒ?‚£ã‚·ãƒ§ãƒ³ãƒã‚§ãƒ?‚¯ [true:ã™ã‚‹/ãれ以å¤?ã—ãªã„]
495             * @see         org.opengion.hayabusa.common.SystemData#USE_SQL_INJECTION_CHECK
496             */
497            public void setQuotCheck( final String flag ) {
498                    quotCheck = nval( getRequestParameter( flag ),quotCheck );
499            }
500    
501            /**
502             * ã€TAGã€?通常ã¯ä½¿ã?¾ã›ã‚“)Queryオブジェクトを作æ?ã™ã‚‹æ™‚ã?DB接続IDを指定ã—ã¾ã™ã?
503             *
504             * @og.tag
505             * Queryオブジェクトを作æ?ã™ã‚‹æ™‚ã?DB接続IDを指定ã—ã¾ã™ã?
506             * ã“れã¯ã€ã‚·ã‚¹ãƒ?ƒ ãƒªã‚½ãƒ¼ã‚¹ã§ã€DEFAULT_DB_URL ç­‰ã§æŒ?®šã—ã¦ã?‚‹ ãƒ??タベã?ス接続å?
507             * æƒ??ã«ã€XX_DB_URL を定義ã™ã‚‹ã“ã¨ã§ã€?dbid="XX" ã¨ã™ã‚‹ã¨ã€ã“㮠接続å?を使用ã—ã¦
508             * ãƒ??タベã?スã«ã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã™ã?
509             *
510             * @param       id ãƒ??タベã?ス接続ID
511             */
512            public void setDbid( final String id ) {
513                    dbid = nval( getRequestParameter( id ),dbid );
514            }
515    
516            /**
517             * ã€TAG】é?ç›®ãŒä¸?¤ã?‘ã®å ´åˆã??—ï¾ï¾žï¾™ï¾˜ï½¿?°?½ã«ã€ã‚­ãƒ¼æƒ??を追åŠ?™ã‚‹ã‹ã©ã?‹ã‚’指定ã—ã¾ã?åˆæœŸå€¤:false)ã€?
518             *
519             * @og.tag
520             * Queryオブジェクトã?é ?›®ãŒä¸?¤ã®å ´åˆã??—ï¾ï¾žï¾™éƒ¨ã«ã¯ã€?¾—ï¾ï¾žï¾™ï¾˜ï½¿?°?½ã‚’使用ã—ã¾ã™ã?
521             * ã“ã?時ã??—ï¾ï¾žï¾™ç„¡ã—ã?å ´åˆã?ã€ã‚­ãƒ¼ãŒè¡¨ç¤ºã•れã¾ã™ãŒã€?¾—ï¾ï¾žï¾™ã‚りã?å ´åˆã?ã€ã‚­ãƒ¼ã¯è¡¨ç¤ºã•れã?
522             * ?—ï¾ï¾žï¾™ã?ã¿è¡¨ç¤ºã•れã¾ã™ã?
523             * 都åˆã«ã‚ˆã£ã¦ã¯ã€ã‚­ãƒ¼ã‚‚表示ã—ãŸã??åˆãŒã‚りã¾ã™ã?ã§ã€ãã®æ§˜ãªã‚±ãƒ¼ã‚¹ã§ã¯ã€?
524             * addKey = "true を設定ã™ã‚‹äº‹ã§ã€ã‚­ãƒ¼:?—ï¾ï¾žï¾?ã®ã‚»ãƒ?ƒˆã‚’ï¾—ï¾ï¾žï¾™ã¨ã—ã¦æ‰±ã?¾ã™ã?
525             * åˆæœŸå€¤ã¯false(キーã¯ä»˜åŠ ã—ãªã?ã§ã™ã?
526             *
527             * @param       id ãƒ??タベã?ス接続ID
528             */
529            public void setAddKey( final String id ) {
530                    addKey = nval( getRequestParameter( id ),addKey );
531            }
532    
533            /**
534             * ã€TAG】リクエスト情報㮠HTMLTagé–‹å§?終äº?–‡å­?&gt;&lt;) 存在ãƒã‚§ãƒ?‚¯ã‚’実施ã™ã‚‹ã‹ã©ã?‹[true/false]を設定ã—ã¾ã?
535             *              (åˆæœŸå€¤:USE_XSS_CHECK[={@og.value org.opengion.hayabusa.common.SystemData#USE_XSS_CHECK}])ã€?
536             *
537             * @og.tag
538             * クロスサイトスクリプティング(XSS)対策ã?ä¸?’°ã¨ã—ã¦less/greater than signã«ã¤ã?¦ã®ãƒã‚§ãƒ?‚¯ã‚’行ã„ã¾ã™ã?
539             * (&gt;&lt;) ãŒå«ã¾ã‚Œã¦ã?Ÿã‚¨ãƒ©ãƒ¼ã«ã™ã‚‹(true)?ã‹ãƒŽã?ãƒã‚§ãƒ?‚¯ã?false)を指定ã—ã¾ã™ã?
540             * (åˆæœŸå€¤:シスãƒ?ƒ å®šæ•°ã®USE_XSS_CHECK[={@og.value org.opengion.hayabusa.common.SystemData#USE_XSS_CHECK}])ã€?
541             *
542             * @og.rev 5.0.0.2 (2009/09/15) æ–°è¦è¿½åŠ?
543             *
544             * @param       flag    XSSãƒã‚§ãƒ?‚¯ [true:ã™ã‚‹/false:ã—ãªã„]
545             * @see         org.opengion.hayabusa.common.SystemData#USE_XSS_CHECK
546             */
547            public void setXssCheck( final String flag ) {
548                    xssCheck = nval( getRequestParameter( flag ),xssCheck );
549            }
550    
551            /**
552             * row行,columåˆ?ã®ãƒ??ã‚¿ã®å€¤ã‚’è¿”ã—ã¾ã™ã?
553             *
554             * ã“れã¯ã€ãƒ‡ãƒ¼ã‚¿ã®å€¤ãã?ã‚‚ã?ã§ã¯ãªãã?ãã?値ã®ãƒ©ãƒ™ãƒ«æ–?­—ã‚’è¿”ã—ã¾ã™ã?
555             *
556             * @param   row         行番å·
557             * @param   column      カラãƒ?•ªå·
558             *
559             * @return  row行,columåˆ?ã®ãƒ??ã‚¿ã®å€¤
560             */
561            private String getRendererValue( final int row,final int column ) {
562                    String val = table.getValue( row,column );
563                    DBColumn clm = table.getDBColumn( column );
564                    return clm.getRendererValue( val );
565            }
566    
567            /**
568             * ã€TAG】オプションã«è¿½åŠ?™ã‚?title 属æ?㮠カラãƒ?•ªå·ã‚’指定ã—ã¾ã™ã?
569             *
570             * @og.tag
571             * オプションã¯ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ã?スを検索ã—ã¦ä½œæ?ã•れã¾ã™ãŒã€ãã®SQLæ–??カラãƒ?ƒ…å ±ã‚?
572             * 使用ã—㦠オプション㫠title 属æ?を追åŠ?—ã¾ã™ã?
573             * title属æ?ã¯ãƒžã‚¦ã‚¹ã‚ªãƒ¼ãƒã?時ã«ãƒ??ルãƒãƒƒãƒ—ã¨ã—ã¦è¡¨ç¤ºã•れるãŸã‚ã?
574             * プルãƒ?‚¦ãƒ³ã®æ¨ªå¹?‚’短ãã—ãŸã„å ´åˆã«æœ‰åйã§ã™ã?
575             * 通常ã€ã‚«ãƒ©ãƒ?•ªå·=0 㯠キーæƒ??ã€?1 ã¯ãƒ©ãƒ™ãƒ«æƒ?? ã§ã™ã?2 ã?3 を指定ã—ã¾ã™ã?
576             * åˆæœŸå€¤ã¯ã€ä½¿ç”¨ã—ãªã?-1)ã§ã™ã?
577             *
578             * @og.rev 4.3.8.0 (2009/08/01) æ–°è¦è¿½åŠ?
579             *
580             * @param   no オプションã«è¿½åŠ?™ã‚‹title属æ?
581             */
582            public void setTitleUseNo( final String no ) {
583                    titleUseNo = nval( getRequestParameter( no ),titleUseNo );
584                    if( titleUseNo == 0 || titleUseNo == 1 ) {
585                            String errMsg = "通常ã€ã‚«ãƒ©ãƒ?•ªå·=0 㯠キーæƒ??ã€?1 ã¯ãƒ©ãƒ™ãƒ«æƒ?? ã§ã™ã?2 ã?3 を指定ã—ã¦ä¸‹ã•ã??";
586                            throw new HybsSystemException( errMsg );
587                    }
588            }
589    
590            /**
591             * シリアライズ用ã®ã‚«ã‚¹ã‚¿ãƒ?‚·ãƒªã‚¢ãƒ©ã‚¤ã‚ºæ›¸ãè¾¼ã¿ãƒ¡ã‚½ãƒ?ƒ‰
592             *
593             * @og.rev 4.0.0.0 (2006/09/31) æ–°è¦è¿½åŠ?
594             * @serialData
595             *
596             * @param       strm    ObjectOutputStreamオブジェク�
597             */
598            private void writeObject( final ObjectOutputStream strm ) throws IOException {
599                    strm.defaultWriteObject();
600            }
601    
602            /**
603             * シリアライズ用ã®ã‚«ã‚¹ã‚¿ãƒ?‚·ãƒªã‚¢ãƒ©ã‚¤ã‚ºèª­ã¿è¾¼ã¿ãƒ¡ã‚½ãƒ?ƒ‰
604             *
605             * ã“ã“ã§ã¯ã€transient 宣è¨?•れãŸå†?ƒ¨å¤‰æ•°ã®å†??åˆæœŸåŒ–ãŒå¿?¦ãªãƒ•ィールドã?ã¿è¨­å®šã—ã¾ã™ã?
606             *
607             * @og.rev 4.0.0.0 (2006/09/31) æ–°è¦è¿½åŠ?
608             * @serialData
609             *
610             * @param       strm    ObjectInputStreamオブジェク�
611             * @see #release2()
612             */
613            private void readObject( final ObjectInputStream strm ) throws IOException , ClassNotFoundException {
614                    strm.defaultReadObject();
615            }
616    
617    //      /**
618    //       * 親ã®og:selectã‚¿ã‚°ã®nameã¨eventColumn設定を返ã—ã¾ã™ã?
619    //       *
620    //       * @og.rev 4.3.6.0 (2009/04/01)
621    //       *
622    //       */
623    //      private String[] getEventColumn(){
624    //              SelectTag seltag = (SelectTag)findAncestorWithClass(this,SelectTag.class);
625    //              String[] selectVal = new String[2];
626    //              selectVal[0] = seltag.getEventColumn();
627    //              selectVal[1] = seltag.get("name");
628    //              return selectVal;
629    //      }
630    
631            /**
632             * ã“ã?オブジェクトã?æ–?­—å?表ç¾ã‚’è¿”ã—ã¾ã™ã?
633             * 基本çš?«ãƒ?ƒãƒ?‚°ç›®çš?«ä½¿ç”¨ã—ã¾ã™ã?
634             *
635             * @return ã“ã?ã‚¯ãƒ©ã‚¹ã®æ–?­—å?表ç¾
636             */
637            @Override
638            public String toString() {
639                    return org.opengion.fukurou.util.ToString.title( this.getClass().getName() )
640                                    .println( "VERSION"             ,VERSION        )
641                                    .println( "selValue"    ,selValue       )
642                                    .println( "defaultVal"  ,defaultVal     )
643                                    .println( "dbid"                ,dbid           )
644                                    .println( "sql"                 ,sql            )
645                                    .println( "separator"   ,separator      )
646                                    .println( "quotCheck"   ,quotCheck      )
647                                    .println( "Other..."    ,getAttributes().getAttribute() )
648                                    .fixForm().toString() ;
649            }
650    }