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 static org.opengion.fukurou.util.StringUtil.nval;
019    
020    import java.io.IOException;
021    import java.io.ObjectInputStream;
022    import java.io.ObjectOutputStream;
023    import java.util.Locale;
024    
025    import org.opengion.fukurou.db.DBUtil;
026    import org.opengion.fukurou.db.Transaction;
027    import org.opengion.fukurou.db.TransactionReal;
028    import org.opengion.fukurou.util.ErrorMessage;
029    import org.opengion.fukurou.util.StringUtil;
030    import org.opengion.hayabusa.common.HybsSystem;
031    import org.opengion.hayabusa.common.HybsSystemException;
032    import org.opengion.hayabusa.db.DBColumn;
033    import org.opengion.hayabusa.db.DBEditConfig;
034    import org.opengion.hayabusa.db.DBTableModel;
035    import org.opengion.hayabusa.db.Query;
036    import org.opengion.hayabusa.db.QueryFactory;
037    import org.opengion.hayabusa.resource.GUIInfo;
038    
039    /**
040     * ãƒ??タベã?ã‚¹ã®æ¤œç´¢ã‚’行ã†ã‚¿ã‚°ã§ã™ã?
041     *
042     * ã“ã?ã‚¿ã‚°ã®å†?®¹ã«ã€SQLæ–?‚’記述ã—ã¾ã™ã? whereã‚¿ã‚°ã€?andã‚¿ã‚° を使ã?¨å¼•æ•°ã«å¿œã˜ã¦
043     * 実行ã•れるSQLæ–?Œç•°ãªã‚Šã¾ã?使用例å‚ç…§)ã€?
044     * ã¾ãŸã?PL/SQLã®SPã§æ¤œç´¢ã‚’行ã†ã¨ãã‚‚ã“ã?タグを使ã?¾ã™ã?
045     * SystemData ã® USE_SQL_INJECTION_CHECK ã?true ã‹ã?quotCheck 属æ?ã?true ã®å ´åˆã?ã€?
046     * ?³?±?¬ã‚¤ãƒ³ã‚¸ã‚§ã‚¯ã‚·ãƒ§ãƒ³å¯¾ç­–用ã®ã‚¯ã‚©ãƒ¼ãƒ?‚£ã‚·ãƒ§ãƒ³ãƒã‚§ãƒ?‚¯ã‚’行ã„ã¾ã™ã?リクエスト引数ã«
047     * クォーãƒ?‚£ã‚·ãƒ§ãƒ³(')ãŒå«ã¾ã‚Œã‚‹ã¨ã€ã‚¨ãƒ©ãƒ¼ã«ãªã‚Šã¾ã™ã?
048     * åŒæ§˜ã«USE_XSS_CHECKãŒtrueã‹ã?xssCheck属æ?ãŒtrueã®å ´åˆã?ã€?
049     * クロスサイトススクリプティング(XSS)対策ã?ãŸã‚less/greater than signã®ãƒã‚§ãƒ?‚¯ã‚’行ã„ã¾ã™ã?
050     *
051     * ※ ã“ã?ã‚¿ã‚°ã¯ã€Transaction ã‚¿ã‚°ã®å¯¾è±¡ã§ã™ã?
052     *
053     * @og.formSample
054     * â—å½¢å¼ï¼?
055     *       ・<og:query command="NEW" >
056     *              SELECTæ–?
057     *         </og:query>
058     *       ・<og:query command="NEW" names="?¥?¥?¥" queryType="JDBCErrMsg" >
059     *              { call PL/SQL(?,?,?,? ) } 
060     *         </og:query>
061     * â—body?šã‚ã‚?
062     *
063     * â—Tag定義??
064     *   <og:query
065     *       queryType          ã€TAG】Query を発行ã™ã‚‹ç‚ºã®ã‚¯ãƒ©ã‚¹ID(JDBC,JDBCCallable,JDBCErrMsg,JDBCUpdate)を指定ã—ã¾ã™{@og.doc03Link queryType åˆæœŸå€¤:JDBC})
066     *       command            ã€TAG】コマンãƒ?NEW,RENEW)ã‚’ã‚»ãƒ?ƒˆã—ã¾ã?PlsqlUpdateTag,UpdateTag ã®å ´åˆã?ã€ENTRY)
067     *       scope              ã€TAG】キャãƒ?‚·ãƒ¥ã™ã‚‹å ´åˆã?スコープ[request/page/session/applicaton]を指定ã—ã¾ã?åˆæœŸå€¤:session)
068     *       maxRowCount        ã€TAGã€?通常ã¯ä½¿ã?¾ã›ã‚“)ãƒ??ã‚¿ã®æœ?¤§èª­ã¿è¾¼ã¿ä»¶æ•°ã‚’指定ã—ã¾ã?(åˆæœŸå€¤:DB_MAX_ROW_COUNT[=1000])(0:[無制é™])
069     *       skipRowCount       ã€TAGã€?通常ã¯ä½¿ã?¾ã›ã‚“)ãƒ??ã‚¿ã®èª­ã¿å§‹ã‚ã®åˆæœŸå€¤ã‚’指定ã—ã¾ã?
070     *       displayMsg         ã€TAGã€‘æ¤œç´¢çµæžœã‚’ç”»é¢ä¸Šã«è¡¨ç¤ºã™ã‚‹ãƒ¡ãƒ?‚»ãƒ¼ã‚¸ãƒªã‚½ãƒ¼ã‚¹IDを指定ã—ã¾ã?(åˆæœŸå€¤:VIEW_DISPLAY_MSG[=])
071     *       overflowMsg        ã€TAG】検索ãƒ??ã‚¿ãŒæœ€å¤§æ¤œç´¢æ•°ã‚’オーãƒã?ã—ãŸå ´åˆã«è¡¨ç¤ºã™ã‚‹ãƒ¡ãƒ?‚»ãƒ¼ã‚¸ãƒªã‚½ãƒ¼ã‚¹IDを指定ã—ã¾ã?(åˆæœŸå€¤:MSG0007[æ¤œç´¢çµæžœãŒã?制é™è¡Œæ•°ã‚’è¶?ˆã¾ã—ãŸã®ã§ã€æ®‹ã‚Šã¯ã‚«ãƒ?ƒˆã•れã¾ã—ãŸ])
072     *       notfoundMsg        ã€TAGã€‘æ¤œç´¢çµæžœãŒã‚¼ãƒ­ä»¶ã®å ´åˆã«è¡¨ç¤ºã™ã‚‹ãƒ¡ãƒ?‚»ãƒ¼ã‚¸ãƒªã‚½ãƒ¼ã‚¹IDを指定ã—ã¾ã?åˆæœŸå€¤:MSG0077[対象ãƒ??ã‚¿ã¯ã‚りã¾ã›ã‚“ã§ã—ãŸ])
073     *       names              ã€TAG】PL/SQLを利用ã™ã‚‹å ´åˆã?引数ã«ã‚»ãƒ?ƒˆã™ã¹ã?ãƒ??ã‚¿ã®åç§°ã‚’CSVå½¢å¼ã§è¤?•°æŒ?®šã—ã¾ã?
074     *       stopZero           ã€TAGã€‘æ¤œç´¢çµæžœãŒï¼ä»¶ã®ã¨ãå?ç?‚’続行ã™ã‚‹ã‹ã©ã?‹[true/false]を指定ã—ã¾ã?åˆæœŸå€¤:false[続行ã™ã‚‹])
075     *       tableId            ã€TAGã€?通常ã¯ä½¿ã?¾ã›ã‚“)çµæžœã®DBTableModelã‚’ã?sessionã«ç™»éŒ²ã™ã‚‹ã¨ãã?キーを指定ã—ã¾ã?
076     *       dbid               ã€TAGã€?通常ã¯ä½¿ã?¾ã›ã‚“)Queryオブジェクトを作æ?ã™ã‚‹æ™‚ã?DB接続IDを指定ã—ã¾ã?
077     *       trace              ã€TAG】引数㮠SQL æ–?‚’ EXPLAIN PLAN ã‚’[true:行ã†/ãれ以å¤?行ã‚ãªã„]を指定ã—ã¾ã?åˆæœŸå€¤:false)
078     *       checkNames         ã€TAGã€‘ãƒªã‚¯ã‚¨ã‚¹ãƒˆå¤‰æ•°ã®æ­£è¦åŒ–を行ã†ã‚«ãƒ©ãƒ?‚’CSVå½¢å¼ã§è¤?•°æŒ?®šã—ã¾ã?
079     *       modifyType         ã€TAG】DB検索時ã? モãƒ?‚£ãƒ•ァイタイプをæŒ?®šã—ã¾ã™[A:追åŠ?C:æ›´æ–°/D:削除]
080     *       quotCheck          ã€TAG】リクエスト情報㮠クォーãƒ?‚£ã‚·ãƒ§ãƒ³(') 存在ãƒã‚§ãƒ?‚¯ã‚’実施ã™ã‚‹ã‹ã©ã?‹[true/false]を設定ã—ã¾ã?åˆæœŸå€¤:USE_SQL_INJECTION_CHECK)
081     *       stopError          ã€TAG】PLSQL/SQL処ç?‚¨ãƒ©ãƒ¼ã®æ™‚ã«å‡¦ç?‚’中止ã™ã‚‹ã‹ã©ã?‹[true/false]を設定ã—ã¾ã?åˆæœŸå€¤:true)
082     *       xssCheck           ã€TAG】リクエスト情報㮠HTMLTagé–‹å§?終äº?–‡å­?><) 存在ãƒã‚§ãƒ?‚¯ã‚’実施ã™ã‚‹ã‹ã©ã?‹[true/false]を設定ã—ã¾ã?(åˆæœŸå€¤:USE_XSS_CHECK[=true])
083     *       mainTrans          ã€TAGã€?通常使ã?¾ã›ã‚“)ã‚¿ã‚°ã§å‡¦ç?•れる処ç?Œãƒ¡ã‚¤ãƒ³ã¨ãªã‚‹ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³å‡¦ç?‹ã©ã?‹ã‚’指定ã—ã¾ã?åˆæœŸå€¤:true)
084     *       caseKey            ã€TAG】ã“ã®ã‚¿ã‚°è‡ªä½“を利用ã™ã‚‹ã‹ã©ã?‹ã®æ¡ä»¶ã‚­ãƒ¼ã‚’指定ã—ã¾ã?åˆæœŸå€¤:null)
085     *       caseVal            ã€TAG】ã“ã®ã‚¿ã‚°è‡ªä½“を利用ã™ã‚‹ã‹ã©ã?‹ã®æ¡ä»¶å€¤ã‚’指定ã—ã¾ã?åˆæœŸå€¤:null)
086     *       useBeforeHtmlTag   ã€TAGã€?処ç?™‚é–?queryTime)ãªã©ã®æƒ??出力[true:有効/false:無効]を指定ã—ã¾ã?åˆæœŸå€¤:true)
087     *       debug              ã€TAG】デãƒãƒƒã‚°æƒ??ã‚’å?力ã™ã‚‹ã‹ã©ã?‹[true/false]を指定ã—ã¾ã?åˆæœŸå€¤:false)
088     *   >   ... Body ...
089     *   </og:query>
090     *
091     * â—使用ä¾?
092     *     <og:query command="NEW">
093     *             select PN,YOBI,NMEN,HINM from XX01 where PN = '{@PN}' order by PN
094     *     </og:query>
095     *
096     *          ・検索æ¡ä»¶ãŒå?力ã•ã‚ŒãŸæ™?{@PN}ãŒNOT NULLã®ã¨ã?
097     *            作æ?ã•れるSQLæ–?çselect PN,YOBI,NMEN,HINM from XX01 where PN = 'AAA' order by PN
098     *          ・検索æ¡ä»¶ãŒå?力ã•れãªã‹ã£ãŸæ™‚({@PN}ãŒNULLã®ã¨ã?
099     *            作æ?ã•れるSQLæ–?çselect PN,YOBI,NMEN,HINM from XX01 where PN = '' order by PN
100     *
101     *     <og:query command="NEW">
102     *             select PN,YOBI,NMEN,HINM from XX01
103     *         <og:where>
104     *             <og:and value="PN = '{@PN}%'" />
105     *             <og:and value="YOBI like '{@YOBI}%'" />
106     *         </og:where>
107     *             order by PN
108     *     </og:query>
109     *
110     *          ・検索æ¡ä»¶ãŒå?力ã•ã‚ŒãŸæ™?{@PN}ãŒNOT NULLã®ã¨ã?
111     *            作æ?ã•れるSQLæ–?çselect PN,YOBI,NMEN,HINM from XX01 PN = 'AAA%' and YOBI like 'BBB%' order by PN
112     *          ・検索æ¡ä»¶ãŒå?力ã•れãªã‹ã£ãŸæ™‚({@PN}ãŒNULLã®ã¨ã? WHEREå¥ãŒãªããªã‚‹ã?
113     *            作æ?ã•れるSQLæ–?çselect PN,YOBI,NMEN,HINM from XX01 order by PN
114     *
115     *        注æ„?WhereTagを使ã£ãŸå?åˆã?下ã?よã†ã«ã¯ãªã‚Šã¾ã›ã‚“ã€?
116     *            select PN,YOBI,NMEN,HINM from XX01 PN = '' and YOBI like '%' order by PN
117     *
118     *     <og:query command="NEW">
119     *             select PN,YOBI,NMEN,HINM from XX01 where PN="11111"
120     *         <og:where startKey="and">
121     *             <og:and value="YOBI like '{@PN}%'" />
122     *         </og:where>
123     *             order by PN
124     *     </og:query>
125     *
126     *          ・検索æ¡ä»¶ãŒå?力ã•ã‚ŒãŸæ™?{@YOBI}ãŒNOT NULLã®ã¨ã?
127     *            作æ?ã•れるSQLæ–?çselect PN,YOBI,NMEN,HINM from XX01 PN = '11111' and YOBI like 'BBB%' order by PN
128     *          ・検索æ¡ä»¶ãŒå?力ã•れãªã‹ã£ãŸæ™‚({@YOBI}ãŒNULLã®ã¨ã? WHEREå¥ãŒãªããªã‚‹ã?
129     *            作æ?ã•れるSQLæ–?çselect PN,YOBI,NMEN,HINM from XX01 PN = '11111' order by PN
130     *
131     *     <og:query
132     *          command    = "NEW"
133     *          names      = "SYSTEM_ID,LANG,CLM,NAME_JA,LABEL_NAME,KBSAKU,USER.ID"
134     *          checkNames = "CLM,NAME_JA"
135     *          queryType  = "JDBCErrMsg"
136     *          displayMsg = "">
137     *              {call TYPE3B01.TYPE3B01(?,?,?,?)}
138     *     </og:query>
139     *
140     *          ・queryType ã« JDBCErrMsg を指定ã—ã¦ã€PL/SQL をコールã§ãã¾ã™ã?
141     *            引数ã¯ã€names 属æ?をキーã«ãƒªã‚¯ã‚¨ã‚¹ãƒˆå¤‰æ•°ã‹ã‚‰èª­ã¿è¾¼ã¿ã¾ã™ã?
142     *          ・checkNames ã«ã‚«ãƒ©ãƒ?を指定ã™ã‚‹ã¨ã€columns.valueSet ã«ã‚ˆã‚‹
143     *            ãƒªã‚¯ã‚¨ã‚¹ãƒˆå¤‰æ•°ã®æ­£è¦åŒ–を行ã„ã¾ã™ã?
144     *
145     * @og.group ?¤?¢æ¤œç´¢
146     * @og.group ?¤?¢ç™»éŒ²
147     *
148     * @version  4.0
149     * @author       Kazuhiko Hasegawa
150     * @since    JDK5.0,
151     */
152    public class QueryTag extends CommonTagSupport {
153            //* ã“ã?プログラãƒ??VERSIONæ–?­—å?を設定ã—ã¾ã™ã?       {@value} */
154            private static final String VERSION = "5.6.5.3 (2013/06/28)" ;
155    
156            private static final long serialVersionUID = 565320130628L ;
157    
158            /** command å¼•æ•°ã«æ¸¡ã™äº‹ã?出æ¥ã‚?コマンãƒ? æ–°è¦?{@value} */
159            public static final String CMD_NEW       = "NEW" ;
160            /** command å¼•æ•°ã«æ¸¡ã™äº‹ã?出æ¥ã‚?コマンãƒ? 冿¤œç´¢ {@value} */
161            public static final String CMD_RENEW = "RENEW" ;
162            /** command å¼•æ•°ã«æ¸¡ã™äº‹ã?出æ¥ã‚?コマンãƒ?リスãƒ? */
163            private static final String[] COMMAND_LIST = new String[] { CMD_NEW , CMD_RENEW };
164    
165            /** エラーメãƒ?‚»ãƒ¼ã‚¸ID {@value} */
166            protected static final String errMsgId   = HybsSystem.ERR_MSG_KEY;
167    
168            private   String        queryType       = null;
169            // 4.0.0.0 (2007/10/10) dbid ã®åˆæœŸå€¤ã‚’ã?"DEFAULT" ã‹ã‚‰ null ã«å¤‰æ›´
170    //      private   String        dbid            = "DEFAULT";
171            private   String        dbid            = null ;
172            protected transient DBTableModel        table           = null;
173            protected transient ErrorMessage        errMessage      = null;
174            protected String        tableId         = HybsSystem.TBL_MDL_KEY;
175            protected String        command         = CMD_NEW;
176            protected int           skipRowCount = 0;
177            protected int           maxRowCount     = -1;
178            protected String        sql                     = null;
179            protected int           executeCount = -1;                      // 検索/実行件数
180            protected String        names           = null;
181            protected boolean       outMessage      = true;
182            protected int           errCode         = ErrorMessage.OK;
183            protected boolean       quotCheck       = HybsSystem.sysBool( "USE_SQL_INJECTION_CHECK" );      // 4.0.0 (2005/08/31)
184            private   boolean       trace           = false;                // 4.0.0 (2005/01/31) å»?­¢
185            private   boolean       stopZero        = false;
186            private   String        modifyType      = null;                 // 3.8.5.1 (2006/05/08) modifyType 属æ?を追åŠ?—ã¾ã™ã?
187    //      private   String        displayMsg      = "MSG0033";    // ã€?»¶æ¤œç´¢ã—ã¾ã—ãŸã€?
188            protected String        displayMsg      = HybsSystem.sys( "VIEW_DISPLAY_MSG" );
189            private   String        overflowMsg     = "MSG0007";    // æ¤œç´¢çµæžœãŒã?制é™è¡Œæ•°ã‚’è¶?ˆã¾ã—ãŸã®ã§ã€æ®‹ã‚Šã¯ã‚«ãƒ?ƒˆã•れã¾ã—ãŸã€?
190            private   String        notfoundMsg     = "MSG0077";    // 対象ãƒ??ã‚¿ã¯ã‚りã¾ã›ã‚“ã§ã—ãŸã€?
191            private   boolean       isMainTrans     = true;                 // 5.1.6.0 (2010/05/01) DBLastSqlã®å‡¦ç??見直ã?
192    
193            // 3.5.4.7 (2004/02/06) 実行時間測定用ã®DIVè¦ç´?‚’出力ã—ã¾ã™ã?
194            protected long dyStart = 0;
195            // 4.3.3.0 (2008/09/22) PLSQL/SQL実行エラーã®éš›ã«ã€å?ç?‚’中止ã™ã‚‹ã‹ã©ã?‹ã€?
196            protected boolean stopError             = true;
197    
198            private StringBuilder debugMsg = null;          // 3.5.6.0 (2004/06/18)
199    
200            // 3.8.0.5 (2005/08/20) ãƒªã‚¯ã‚¨ã‚¹ãƒˆå¤‰æ•°ã®æ­£è¦åŒ–を行ã„ã¾ã™ã?
201            private String                  checkNames      = null;
202    
203            // 3.8.5.3 (2006/08/07) トレース時ã?メãƒ?‚»ãƒ¼ã‚¸æ–?­—å?ã‚’ä¿å­˜ã—ã¦ãŠãã¾ã™ã?
204            private String                  traceMsg        = null;
205    
206            protected boolean       xssCheck        = HybsSystem.sysBool( "USE_XSS_CHECK" );        // 5.0.0.2 (2009/09/15)
207    
208            // 5.3.5.0 (2011/05/01) 処ç?™‚é–?queryTime)ãªã©ã®æƒ??出力ã?有効/無効を指定ã—ã¾ã™ã?
209            private boolean         useBeforeHtmlTag        = true ;
210    
211            /**
212             * Taglibã®é–‹å§‹ã‚¿ã‚°ãŒè¦‹ã¤ã‹ã£ãŸã¨ãã«å‡¦ç?™ã‚?doStartTag() ã‚?オーãƒã?ライドã—ã¾ã™ã?
213             *
214             * @og.rev 3.5.4.7 (2004/02/06) 実行時間測定用ã«ã€?–‹å§‹æ™‚刻をå–å¾—ã—ã¾ã™ã?
215             * @og.rev 3.5.6.5 (2004/08/09) 暫定的ã«ã€DBTableModelã‚’å?行削除ã—ã¾ã™ã?
216             * @og.rev 3.6.0.0 (2004/09/24) DBTableModel ã®å…ˆè¡Œå‰Šé™¤ã¯ã€scope="session" ã®å ´åˆã?ã¿ã€?
217             * @og.rev 5.1.6.0 (2010/05/01) DBLastSqlã®å‡¦ç??ã€DBTableModelãŒæ–°è¦ä½œæ?ã•れãŸå?ç?§ã®ã¿è¡Œã†ã€?
218             * @og.rev 5.2.2.0 (2010/11/01) caseKey ã€caseVal 属æ?対å¿?
219             *
220             * @return      後続å?ç??æŒ?¤º
221             */
222            @Override
223            public int doStartTag() {
224                    // 5.2.2.0 (2010/11/01) caseKey ã€caseVal 属æ?対å¿?
225                    if( useTag() ) {
226                            dyStart = System.currentTimeMillis();
227                            if( ! check( command, COMMAND_LIST ) ) { return(SKIP_BODY); }
228    
229                            useMainTrans( isMainTrans );                    // 5.1.6.0 (2010/05/01) DBLastSqlã®å‡¦ç??見直ã?
230                            startQueryTransaction( tableId );               // 3.6.0.8 (2004/11/19)
231    
232                            // 3.5.6.5 (2004/08/09) 削除ã™ã‚‹ã®ã¯ã€ã‚»ãƒ?‚·ãƒ§ãƒ³ã®ã‚ªãƒ–ジェクトã§ã‚ˆã„ã€?
233                            // 3.6.0.0 (2004/09/24) 削除ã™ã‚‹ã®ã¯ã€scope="session" ã®å ´åˆã?ã¿ã€?
234                            if( "session".equals( getScope() ) ) {
235                                    removeSessionAttribute( tableId );
236                                    removeSessionAttribute( HybsSystem.VIEWFORM_KEY );
237                            }
238    
239                            return( EVAL_BODY_BUFFERED );   // Body を評価ã™ã‚‹ã€? extends BodyTagSupport æ™?
240                    }
241                    return ( SKIP_BODY );                           // Body を評価ã—ãªã?
242            }
243    
244            /**
245             * Taglibã®ã‚¿ã‚°æœ¬ä½“を処ç?™ã‚?doAfterBody() ã‚?オーãƒã?ライドã—ã¾ã™ã?
246             *
247             * @og.rev 3.1.1.0 (2003/03/28) ボディã®å†?®¹ã‚’å–å¾—ã™ã‚‹å?ç?‚’ã€CommonTagSupport ã§è¡Œã†ã€?
248             * @og.rev 3.6.0.8 (2004/11/19) エラー発生時ã«ç¢ºå®Ÿã«ãƒªãƒªãƒ¼ã‚¹ã•れるよã?« try finally 追åŠ?
249             * @og.rev 3.8.5.3 (2006/08/07) USER.LASTSQL ã¸ã®SQLæ–??ä¿å­˜ã?ã€å®Ÿè¡Œå‰ã«è¡Œã£ã¦ãŠãã¾ã™ã?
250             * @og.rev 3.8.6.3 (2006/11/30) SQL æ–??å‰å¾Œã?スペã?スをå–り除ãã¾ã™ã?
251             * @og.rev 3.8.7.0 (2006/12/15) アクセスログå–å¾—ã?為,ApplicationInfoオブジェクトを設å®?
252             * @og.rev 4.0.0.0 (2005/01/31) lang â‡?ResourceManager ã¸å¤‰æ›´
253             * @og.rev 4.0.0.0 (2005/08/31) useQuotCheck() ã«ã‚ˆã‚‹?³?±?¬ã‚¤ãƒ³ã‚¸ã‚§ã‚¯ã‚·ãƒ§ãƒ³å¯¾ç­?
254             * @og.rev 4.3.4.0 (2008/12/01) GE20(ユーザー定数)ã¸ç™»éŒ²ã™ã‚‹ã‹ã?フラグã¸ã®å¯¾å¿?
255             * @og.rev 5.0.0.2 (2009/09/15) XSS対�
256             * @og.rev 5.1.6.0 (2010/05/01) DBLastSqlã®å‡¦ç??ã€DBTableModelãŒæ–°è¦ä½œæ?ã•れãŸå?ç?§ã®ã¿è¡Œã†ã€?
257             * @og.rev 5.1.9.0 (2010/08/01) TransactionTag 対応ã?上ä½ã« TransactionTag ãŒã‚れã?ã€ãã“ã‹ã‚‰Connection をもらã†ã€?
258             * @og.rev 5.3.6.0 (2011/06/01) é›?¨ˆã?åˆè¨ˆãªã©ã®Edit機è?ã«å¯¾å¿œã—ã¾ã™ã?
259             * @og.rev 5.3.7.0 (2011/07/01) TransactionReal ã®å¼•数変更
260             * @og.rev 5.3.7.0 (2011/07/01) PL/SQLã‹ã¤scope="request"ã§æ­£ã—ã出力ã™ã‚‹ãŸã‚queryType,namesã‚‚ä¿å­˜ã™ã‚‹ã?
261             * @og.rev 5.3.8.0 (2011/08/01) Transaction発生ç®?‰€ã§close()
262             * @og.rev 5.5.3.4 (2012/06/19) trace 時ã?ã€å®Ÿéš›ã®æ¤œç´¢å‡¦ç?‚’行ã‚ãªã?§˜ã«å¤‰æ›´ã€?
263             * @og.rev 5.6.5.3 (2013/06/28) LASTQUERYTYPE �LASTSQLTYPE 変更�
264             *
265             * @return      後続å?ç??æŒ?¤º(SKIP_BODY)
266             */
267            @Override
268            public int doAfterBody() {
269    
270                    // 4.0.0 (2005/08/31) useQuotCheck() ã«ã‚ˆã‚‹?³?±?¬ã‚¤ãƒ³ã‚¸ã‚§ã‚¯ã‚·ãƒ§ãƒ³å¯¾ç­?
271                    useQuotCheck( quotCheck );
272                    // 5.0.0.2 (2009/09/15) XSS対�
273                    useXssCheck( xssCheck );
274    
275                    sql = getBodyString().trim();
276    
277                    // 3.2.1.0 (2003/05/28) æœ?µ‚ï¼³?±?¬æ–?‚’ã€UserInfo ã«ã€ã‚­ãƒ£ãƒ?‚·ãƒ¥ã—ã¦ãŠãã€?
278    //              setUserInfo( "LASTSQL", sql );
279                    // 5.1.6.0 (2010/05/01) DBLastSqlã®å‡¦ç??見直ã?
280                    if( isMainTrans ) {
281                            setUserInfo( "LASTSQL", sql, false );
282                            // 5.3.7.0 (2011/07/01) PL/SQLã‹ã¤scope="request"ã§æ­£ã—ã出力ã™ã‚‹ãŸã‚queryType,namesã‚‚ä¿å­˜ã™ã‚‹ã?
283    //                      setUserInfo( "LASTQUERYTYPE", queryType, false );
284                            setUserInfo( "LASTSQLTYPE", queryType, false );                         // 5.6.5.3 (2013/06/28)
285                            setUserInfo( "LASTNAMES", names, false );
286                    }
287    
288                    Query query = QueryFactory.newInstance( queryType );
289                    Transaction tran = null;
290                    try {
291                            if( maxRowCount < 0 ) {
292                                    maxRowCount     = sysInt( "DB_MAX_ROW_COUNT" );
293                            }
294    
295                            // 5.1.9.0 (2010/08/01) TransactionTag 対�
296    //                      final Transaction tran ;
297                            TransactionTag tranTag = (TransactionTag)findAncestorWithClass( this,TransactionTag.class );
298                            if( tranTag == null ) {
299    //                              tran = new TransactionReal( dbid,getApplicationInfo() );
300                                    tran = new TransactionReal( getApplicationInfo() );             // 5.3.7.0 (2011/07/01) 引数変更
301                            }
302                            else {
303                                    tran = tranTag.getTransaction();
304                            }
305                            query.setTransaction( dbid,tran );      // 5.1.9.0 (2010/08/01) TransactionTag 対�
306    
307                            query.setSkipRowCount( skipRowCount );
308                            query.setMaxRowCount( maxRowCount );
309    //                      query.setConnectionID( dbid );
310                            query.setResourceManager( getResource() );      // 4.0.0 (2005/01/31)
311    
312                            if( trace ) {
313    //                              traceMsg = traceQuery( sql );
314                                    traceMsg = traceQuery( sql,tran );              // 5.1.9.0 (2010/08/01) TransactionTag 対�
315                                    // 5.5.3.4 (2012/06/19) trace 時ã?ã€å®Ÿéš›ã®æ¤œç´¢å‡¦ç?‚’行ã‚ãªã?§˜ã«å¤‰æ›´
316    //                              query.setMaxRowCount( 1 );
317                                    return(SKIP_BODY);
318                            }
319                            query.setStatement( sql );
320    //                      query.setApplicationInfo( getApplicationInfo() );       // 3.8.7.0 (2006/12/15)
321    
322                            // 5.3.6.0 (2011/06/01) é›?¨ˆã?åˆè¨ˆãªã©ã®Edit機è?ã«å¯¾å¿œã—ã¾ã™ã?
323                            if( isMainTrans ) {
324                                    String guikey = getGUIInfoAttri( "KEY" );
325                                    String editName = getRequestValue( "editName" );
326                                    DBEditConfig config = getUser().getEditConfig( guikey, editName );
327                                    if( config != null ) {
328                                            query.setEditConfig( config );
329                                    }
330                            }
331    
332                            execute( query );
333    
334                            executeCount = query.getExecuteCount();
335                            if( errCode < ErrorMessage.NG && executeCount >= 0 ) {            // 異常以外ã?å ´å?
336                                    table = query.getDBTableModel();
337                                    // 3.8.5.1 (2006/05/08) modifyType 属æ?を追åŠ?—ã¾ã™ã?
338                                    if( modifyType != null ) {
339                                            for( int row=0; row<executeCount; row++ ) {
340                                                    table.setModifyType( row,modifyType );
341                                            }
342                                    }
343                            }
344                    }
345                    finally {
346    //                      if( query != null ) { query.close(); }
347                            QueryFactory.close( query );
348                            if( tran != null ) { tran.close(); }            // 5.3.8.0 (2011/08/01) Transaction発生ç®?‰€ã§close()
349                    }
350                    return(SKIP_BODY);
351            }
352    
353            /**
354             * Taglibã®çµ‚äº?‚¿ã‚°ãŒè¦‹ã¤ã‹ã£ãŸã¨ãã«å‡¦ç?™ã‚?doEndTag() ã‚?オーãƒã?ライドã—ã¾ã™ã?
355             *
356             * @og.rev 2.0.0.8 (2002/10/09) command="NEW" ã®ã¨ãã?ã¿ã€displayMsg を表示ã•ã›ã¾ã™ã?
357             * @og.rev 2.1.1.4 (2002/11/25) ãƒ?ƒãƒ?‚°æ™‚ã«æœ?µ‚SQLをユーザーæƒ??ã‚’ã‚»ãƒ?ƒˆã™ã‚‹ã‚ˆã†ã«å¤‰æ›´ã€?
358             * @og.rev 2.1.2.1 (2002/11/27) ErrorMessage をクリアã—ãªã?‚ˆã?«å¤‰æ›´ã€?
359             * @og.rev 3.1.1.0 (2003/03/28) JspWriter オブジェクトã?使用ç®?‰€ã‚’ã?jspPrint() を使用ã™ã‚‹ã‚ˆã†ã«å¤‰æ›´ã€?
360             * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応ã?release2() ã‚?doEndTag()ã§å‘¼ã¶ã€?
361             * @og.rev 3.2.1.0 (2003/05/28) æœ?µ‚ï¼³?±?¬æ–?‚’ã€UserInfo ã«ã€ã‚­ãƒ£ãƒ?‚·ãƒ¥ã—ã¦ãŠãã€?
362             * @og.rev 3.3.3.3 (2003/08/06) æ¤œç´¢çµæžœã®ä»¶æ•°ã‚’ã?"DB.COUNT" キーã§ãƒªã‚¯ã‚¨ã‚¹ãƒˆã«ã‚»ãƒ?ƒˆã™ã‚‹ã€?
363             * @og.rev 3.3.3.3 (2003/08/06) æ¤œç´¢çµæžœã‚’ã?"DB.ERR_CODE" キーã§ãƒªã‚¯ã‚¨ã‚¹ãƒˆã«ã‚»ãƒ?ƒˆã™ã‚‹ã€?
364             * @og.rev 3.5.4.7 (2004/02/06) 実行時間測定用ã®DIVè¦ç´?‚’出力ã—ã¦ãŠãã¾ã™ã?
365             * @og.rev 3.5.4.9 (2004/02/25) 警告時ã«åœæ­¢ã—ã¦ã?¾ã—ãŸãŒã?継続å?ç?•ã›ã¾ã™ã?
366             * @og.rev 3.5.5.0 (2004/03/12) ErrorMessage オブジェクトをã€query ãŒæ?功ã—ãŸæ™‚ã«ã‚‚クリアã™ã‚‹ã‚ˆã†ã«å¤‰æ›´
367             * @og.rev 3.5.5.2 (2004/04/02) TaglibUtil.makeHTMLErrorTable メソãƒ?ƒ‰ã‚’利用
368             * @og.rev 3.5.5.8 (2004/05/20) ErrorMessage オブジェクトをã€ã‚³ãƒžãƒ³ãƒ‰ãŒ NEW ã®å ´åˆã?ã¿ã€ã‚¯ãƒªã‚¢
369             * @og.rev 3.5.6.0 (2004/06/18) debugMsg 属æ?ã‚’å?力ã™ã‚‹ã‚ˆã?«ä¿®æ­£ã—ã¾ã™ã?
370             * @og.rev 3.6.0.8 (2004/11/19) DBTableModel をセーブã™ã‚‹æ™‚ã«ã€ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ãƒã‚§ãƒ?‚¯ã‚’行ã„ã¾ã™ã?
371             * @og.rev 3.8.5.3 (2006/08/07) USER.LASTSQL ã¸ã®SQLæ–??ä¿å­˜ã?ã€å®Ÿè¡Œå‰ã«è¡Œã£ã¦ãŠãã¾ã™ã?
372             * @og.rev 4.0.0.0 (2006/11/14) notfoundMsg 属æ?を追åŠ??displayMsg ã¯ã€VIEW_USE_DISPLAY_MSG ã§åˆ¶å¾¡
373             * @og.rev 4.0.0.0 (2007/10/18) メãƒ?‚»ãƒ¼ã‚¸ãƒªã‚½ãƒ¼ã‚¹çµ±å? getResource().getMessage > getResource().getLabel )
374             * @og.rev 4.3.3.0 (2008/09/22) 属æ? stopError ã®è¨­å®šã«ã‚ˆã‚Šã€JSP処ç?‚’中止ã™ã‚‹ã‹ã©ã?‹ã‚’制御ã—ã¾ã™ã?
375             * @og.rev 5.2.2.0 (2010/11/01) caseKey ã€caseVal 属æ?対å¿?
376             * @og.rev 5.3.5.0 (2011/05/01) 処ç?™‚é–?queryTime)ãªã©ã®æƒ??出力ã?有効/無効を指定ã—ã¾ã™ã?
377             * @og.rev 5.5.0.3 (2012/03/13) オーãƒã?フローメãƒ?‚»ãƒ¼ã‚¸ãŒå­˜åœ¨ã—ãªã?¨ãã?ã€ä½•ã‚‚ã—ãªã??(改行も入れãªã?
378             * @og.rev 5.5.3.4 (2012/06/19) trace 時ã?ã€å®Ÿéš›ã®æ¤œç´¢å‡¦ç?‚’行ã‚ãªã?§˜ã«å¤‰æ›´ã€?
379             * @og.rev 5.6.3.0 (2013/04/01) エラー時メãƒ?‚»ãƒ¼ã‚¸å¤‰æ›´
380             *
381             * @return      後続å?ç??æŒ?¤º
382             */
383            @Override
384            public int doEndTag() {
385                    debugPrint();           // 4.0.0 (2005/02/28)
386                    // 5.2.2.0 (2010/11/01) caseKey ã€caseVal 属æ?対å¿?
387                    if( !useTag() ) { return(EVAL_PAGE); }
388    
389                    if( trace ) {
390                            jspPrint( traceMsg );
391                            return (SKIP_PAGE);             // 5.5.3.4 (2012/06/19) trace 時ã?ã€å®Ÿéš›ã®æ¤œç´¢å‡¦ç?‚’行ã‚ãªã?§˜ã«å¤‰æ›´ã€?
392                    }
393    
394                    String label  = "";                             // 4.0.0 (2005/11/30) 検索ã—ãªã‹ã£ãŸå?åˆã?
395                    if( check( command, COMMAND_LIST ) ) {
396                            StringBuilder buf = new StringBuilder( HybsSystem.BUFFER_SMALL );
397    
398                            // 実行件数ã®è¡¨ç¤º command="NEW" ã®ã¨ãã?ã¿ã€displayMsg を表示ã•ã›ã¾ã™ã?
399                            // 4.0.0 (2005/11/30) 出力é?ã®å¤‰æ›´ã€‚ä¸?•ªæœ??ã«å‡ºåŠ›ã—ã¾ã™ã?
400    //                      boolean useStatusBar = HybsSystem.sysBool( "VIEW_USE_DISPLAY_MSG" );
401                            if( CMD_NEW.equals( command ) ) {
402    //                              if( useStatusBar && executeCount > 0 && displayMsg != null && displayMsg.length() > 0 ) {
403                                    if( executeCount > 0 && displayMsg != null && displayMsg.length() > 0 ) {
404                                            buf.append( executeCount );
405    //                                      buf.append( getResource().getMessage( displayMsg ) );
406                                            buf.append( getResource().getLabel( displayMsg ) );
407                                            buf.append( HybsSystem.BR );
408                                    }
409                                    else if( executeCount == 0 && notfoundMsg != null && notfoundMsg.length() > 0 ) {
410    //                                      buf.append( getResource().getMessage( notfoundMsg ) );
411                                            buf.append( getResource().getLabel( notfoundMsg ) );
412                                            buf.append( HybsSystem.BR );
413                                    }
414                            }
415    
416                            // 3.3.3.3 (2003/08/06) æ¤œç´¢çµæžœã®ä»¶æ•°ã‚’ã?"DB.COUNT" キーã§ãƒªã‚¯ã‚¨ã‚¹ãƒˆã«ã‚»ãƒ?ƒˆã™ã‚‹ã€?
417                            setRequestAttribute( "DB.COUNT"   , String.valueOf( executeCount ) );
418                            // 3.3.3.3 (2003/08/06) æ¤œç´¢çµæžœã‚’ã?"DB.ERR_CODE" キーã§ãƒªã‚¯ã‚¨ã‚¹ãƒˆã«ã‚»ãƒ?ƒˆã™ã‚‹ã€?
419                            setRequestAttribute( "DB.ERR_CODE", String.valueOf( errCode ) );
420    
421                            // オーãƒã?フロー時ã?メãƒ?‚»ãƒ¼ã‚¸ã‚’表示
422    //                      if( table != null && table.isOverflow() ) {
423                            // 5.5.0.3 (2012/03/09) オーãƒã?フローメãƒ?‚»ãƒ¼ã‚¸ãŒå­˜åœ¨ã—ãªã?¨ãã?ã€ä½•ã‚‚ã—ãªã??(改行も入れãªã?
424                            if( table != null && table.isOverflow() && overflowMsg != null && overflowMsg.length() > 0  ) {
425    //                              buf.append( getResource().getMessage( overflowMsg ) );
426                                    buf.append( getResource().getLabel( overflowMsg ) );
427                                    buf.append( HybsSystem.BR );
428                            }
429    
430                            // 3.5.5.2 (2004/04/02) TaglibUtil.makeHTMLErrorTable メソãƒ?ƒ‰ã‚’利用
431                            String err = TaglibUtil.makeHTMLErrorTable( errMessage,getResource() );
432                            if( err != null && err.length() > 0 ) {
433                                    buf.append( err );
434                                    setSessionAttribute( errMsgId,errMessage );
435                            }
436                            else if( CMD_NEW.equals( command ) ) {          // 3.5.5.8 (2004/05/20)
437                                    removeSessionAttribute( errMsgId );
438                            }
439                            label = buf.toString();
440    
441                            if( table != null && ! commitTableObject( tableId, table ) ) {
442                                    // 3.6.0.8 (2004/11/19) トランザクションãƒã‚§ãƒ?‚¯ã‚’行ã„ã¾ã™ã?
443                                    // jspPrint( "QueryTag Query処ç?Œå‰²ã‚Šè¾¼ã¾ã‚Œã¾ã—ãŸã€?BTableModel ã¯ç™»éŒ²ã—ã¾ã›ã‚“ã€? );
444                                    
445                                    // 5.6.4.0 (2013/04/01) リソースã‹ã‚‰å‡ºåŠ›ã™ã‚‹ã‚ˆã?«å¯¾å¿?
446                                    ErrorMessage errMsgObj = new ErrorMessage( "QueryTag Query Error!" );
447                                    errMsgObj.addMessage( 0,ErrorMessage.NG,"ERR0041" );
448                                    jspPrint( TaglibUtil.makeHTMLErrorTable( errMsgObj,getResource() ) );
449                                    
450                                    return (SKIP_PAGE);
451                            }
452                    }
453    
454                    jspPrint( label );
455    
456                    // 3.5.4.9 (2004/02/25) 警告時ã«åœæ­¢ã—ã¦ã?¾ã—ãŸãŒã?継続å?ç?•ã›ã¾ã™ã?
457    //              int rtnCode = EVAL_PAGE;
458                    final int rtnCode ;
459                    if( errCode >= ErrorMessage.NG )  {  // 異常
460                            if( stopError ) {                               // 4.3.3.0 (2008/09/22) 属æ? stopError ã®è¨­å®šã«ã‚ˆã‚Šã€å?ç?‚’中止ã™ã‚‹ã‹ã‚’判断ã—ã¾ã™ã?
461                                    rtnCode = SKIP_PAGE;
462                            }
463                            else {
464                                    rtnCode = EVAL_PAGE;
465                            }
466                    }
467                    else {
468                            // ä»¶æ•°?ä»¶ã‹ã¤ stopZero = true
469                            if( executeCount == 0 && stopZero )     {
470                                    rtnCode = SKIP_PAGE;
471                            }
472                            else {
473                                    rtnCode = EVAL_PAGE;
474                            }
475                    }
476    
477                    // 3.5.4.7 (2004/02/06)
478                    long dyTime = System.currentTimeMillis()-dyStart;
479    
480                    // 5.3.5.0 (2011/05/01) 処ç?™‚é–?queryTime)ãªã©ã®æƒ??出力ã?有効/無効を指定ã—ã¾ã™ã?
481                    if( useBeforeHtmlTag ) {
482                            jspPrint( "<div id=\"queryTime\" value=\"" + (dyTime) + "\"></div>" );      // 3.5.6.3 (2004/07/12)
483                    }
484    
485                    // 4.0.0 (2005/01/31) セキュリãƒ?‚£ãƒã‚§ãƒ?‚¯(ãƒ??タアクセス件数登録)
486                    GUIInfo guiInfo = (GUIInfo)getSessionAttribute( HybsSystem.GUIINFO_KEY );
487                    if( guiInfo != null ) { guiInfo.addReadCount( executeCount,dyTime,sql ); }
488    
489                    return( rtnCode );
490            }
491    
492            /**
493             * タグリブオブジェクトをリリースã—ã¾ã™ã?
494             * キャãƒ?‚·ãƒ¥ã•れã¦å†åˆ©ç”¨ã•れるã?ã§ã€ãƒ•ィールドã?åˆæœŸè¨­å®šã‚’行ã„ã¾ã™ã?
495             *
496             * @og.rev 2.0.0.4 (2002/09/27) カスタãƒ?‚¿ã‚°ã® release() メソãƒ?ƒ‰ã‚’ã?追åŠ?
497             * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応ã?release2() ã‚?doEndTag()ã§å‘¼ã¶ã€?
498             * @og.rev 3.5.4.7 (2004/02/06) 実行時間測定用ã«ã€dyStart を追åŠ?—ã¾ã™ã?
499             * @og.rev 3.5.6.0 (2004/06/18) debugMsg 属æ?を追åŠ?—ã¾ã™ã?
500             * @og.rev 3.8.0.5 (2005/08/20) checkNames 属æ?を追åŠ?—ã¾ã™ã?
501             * @og.rev 3.8.5.1 (2006/05/08) modifyType 属æ?を追åŠ?—ã¾ã™ã?
502             * @og.rev 3.8.5.1 (2006/05/08) traceMsg 属æ?(トレース時ã?メãƒ?‚»ãƒ¼ã‚¸æ–?­—å?)を追åŠ?—ã¾ã™ã?
503             * @og.rev 4.0.0.0 (2005/08/31) quotCheck 属æ?ã®è¿½åŠ?
504             * @og.rev 4.0.0.0 (2007/10/10) dbid ã®åˆæœŸå€¤ã‚’ã?"DEFAULT" ã‹ã‚‰ null ã«å¤‰æ›´
505             * @og.rev 4.3.3.0 (2008/09/22) stopError 属æ?ã®è¿½åŠ?
506             * @og.rev 5.0.0.2 (2009/09/15) XSS対�
507             * @og.rev 5.1.6.0 (2010/05/01) DBLastSqlã®å‡¦ç??ã€DBTableModelãŒæ–°è¦ä½œæ?ã•れãŸå?ç?§ã®ã¿è¡Œã†ã€?
508             * @og.rev 5.3.5.0 (2011/05/01) 処ç?™‚é–?queryTime)ãªã©ã®æƒ??出力ã?有効/無効を指定ã—ã¾ã™ã?
509             *
510             */
511            @Override
512            protected void release2() {
513                    super.release2();
514                    tableId                 = HybsSystem.TBL_MDL_KEY;
515                    queryType               = null;
516    //              dbid                    = "DEFAULT";
517                    dbid                    = null;
518                    command                 = CMD_NEW;
519                    skipRowCount    = 0;
520                    maxRowCount             = -1;
521                    table                   = null;
522                    sql                             = null;
523    //              displayMsg              = "MSG0033";    // ã€?»¶æ¤œç´¢ã—ã¾ã—ãŸã€?
524                    displayMsg              = HybsSystem.sys( "VIEW_DISPLAY_MSG" );
525                    overflowMsg             = "MSG0007";    // æ¤œç´¢çµæžœãŒã?制é™è¡Œæ•°ã‚’è¶?ˆã¾ã—ãŸã®ã§ã€æ®‹ã‚Šã¯ã‚«ãƒ?ƒˆã•れã¾ã—ãŸã€?
526                    notfoundMsg             = "MSG0077";    // 対象ãƒ??ã‚¿ã¯ã‚りã¾ã›ã‚“ã§ã—ãŸã€?
527                    executeCount    = -1;                   // 検索/実行件数
528                    names                   = null;
529                    outMessage              = true;
530                    trace                   = false;
531                    errCode                 = ErrorMessage.OK;
532                    errMessage              = null;
533                    stopZero                = false;
534                    stopError               = true;                 // 4.3.3.0 (2008/09/22)
535                    dyStart                 = 0;
536                    debugMsg                = null;                 // 3.5.6.0 (2004/06/18)
537                    checkNames              = null;                 // 3.8.0.5 (2005/08/20)
538                    quotCheck               = HybsSystem.sysBool( "USE_SQL_INJECTION_CHECK" );      // 4.0.0 (2005/08/31)
539                    modifyType      = null;                 // 3.8.5.1 (2006/05/08)
540                    traceMsg                = null;                 // 3.8.5.3 (2006/08/07)
541                    xssCheck                = HybsSystem.sysBool( "USE_XSS_CHECK" );        // 5.0.0.2 (2009/09/15)
542                    isMainTrans             = true;                 // 5.1.6.0 (2010/05/01) DBLastSqlã®å‡¦ç??見直ã?
543                    useBeforeHtmlTag        = true ;        // 5.3.5.0 (2011/05/01)
544            }
545    
546            /**
547             * Query を実行ã—ã¾ã™ã?
548             *
549             * @og.rev 2.1.2.3 (2002/12/02) ãƒ??タベã?ス更新時ã«ã€æ›´æ–°ãƒ•ラグをセãƒ?ƒˆã™ã‚‹ã‚ˆã†ã«å¤‰æ›´
550             * @og.rev 3.4.0.0 (2003/09/01) 登録エラー時ã?キーã¨å€¤ã‚’表示ã™ã‚‹ã‚ˆã†ã«å¤‰æ›´ã€?
551             * @og.rev 3.5.6.0 (2004/06/18) ãƒ?ƒãƒ?‚°æƒ??出力用ã«ã€printDebug メソãƒ?ƒ‰ã‚’追åŠ??
552             * @og.rev 3.6.1.0 (2005/01/05) エラーコードã«ã‚ˆã‚‹ commit/rollback ã®åˆ¤æ–­è¿½åŠ?
553             * @og.rev 5.3.7.0 (2011/07/01) nameã®åˆ¤å®šã«ã‚¼ãƒ­æ–?­—å?を付加
554             *
555             * @param       query オブジェク�
556             */
557            protected void execute( final Query query ) {
558                    String[] nameArray = null;
559                    String[] values    = null;
560                    try {
561    //                      if( names == null ) {
562                            if( names == null || names.length() == 0 ) {
563                                    query.execute();
564                            }
565                            else {
566                                    nameArray = StringUtil.csv2Array( names );
567                                    values = getRequest( nameArray );
568                                    // 3.5.6.0 (2004/06/18) ãƒ?ƒãƒ?‚°æƒ??出力用
569                                    if( isDebug() ) { printDebug( nameArray,values ); }
570                                    query.execute( values );
571                            }
572                            errCode = query.getErrorCode();
573                            errMessage = query.getErrorMessage();
574                            // 3.6.1.0 (2005/01/05) エラーコードã«ã‚ˆã‚‹ commit/rollback ã®åˆ¤æ–­è¿½åŠ?
575    //                      if( query.getUpdateFlag() ) {
576                            if( query.isUpdate() ) {
577                                    if( errCode < ErrorMessage.NG ) {            // 異常以下ã?å ´å?
578                                            query.commit();
579                                    }
580                                    else {
581                                            query.rollback();
582                                    }
583                            }
584                    }
585                    catch( HybsSystemException ex ) {
586                            query.rollback();
587    
588                            // 4.0.0 (2005/02/28) エラー時ã?表示ã¨ãƒ?ƒãƒ?‚°æ™‚ã?表示を統ä¸?™ã‚‹ã?
589                            String errMsg = "DATABASE ERROR! " + HybsSystem.CR ;
590                            if( nameArray != null ) {
591                                    printDebug( nameArray,values );
592                                    errMsg += debugMsg;
593                            }
594                            throw new HybsSystemException( errMsg,ex );             // 3.5.5.4 (2004/04/15) 引数ã®ä¸¦ã³é ?¤‰æ›´
595                    }
596                    finally {
597                            if( query != null ) { query.close(); }
598                    }
599            }
600    
601            /**
602             * ãƒ?ƒãƒ?‚°ç”¨ã«ã€??列データを書ãå?ã—ã¾ã™ã?
603             *
604             * @og.rev 3.5.6.0 (2004/06/18) æ–°è¦è¿½åŠ?
605             *
606             * @param       nms     引数 names ã®é…å?ãƒ??ã‚¿
607             * @param       vals    names ã«å¯¾å¿œã™ã‚‹ãƒªã‚¯ã‚¨ã‚¹ãƒˆæƒ…å ±ã®é…å?
608             */
609            private void printDebug( final String[] nms,final String[] vals ) {
610                    if( debugMsg == null ) { debugMsg = new StringBuilder(); }
611    
612                    debugMsg.append( "  names=[" );
613                    debugMsg.append( StringUtil.array2csv( nms ) );
614                    debugMsg.append( "]" );
615                    debugMsg.append( HybsSystem.CR );
616                    debugMsg.append( "  values=[" );
617                    debugMsg.append( StringUtil.array2csv( vals ) );
618                    debugMsg.append( "]" );
619                    debugMsg.append( HybsSystem.CR );
620            }
621    
622            /**
623             * åç§°é…å?ã‚’å?ã«ã€ãƒªã‚¯ã‚¨ã‚¹ãƒˆæƒ…å ±ã®ãƒ??ã‚¿ã‚’å–å¾—ã—ã¾ã™ã?
624             * checkNames 属æ?ã«è¨­å®šã•れã¦ã?‚‹ã‚«ãƒ©ãƒ?Œã‚れã°ã€å?ã‚’æ­£è¦åŒ–ã—ã¾ã™ã?
625             *
626             * @og.rev 3.8.0.5 (2005/08/20) ãƒªã‚¯ã‚¨ã‚¹ãƒˆå¤‰æ•°ã®æ­£è¦åŒ–(checkNames)対å¿?
627             *
628             * @param       nameArray       キーã¨ãªã‚‹åç§°ã®é…å?
629             *
630             * @return      ãã?リクエスト情報ã®é…å?
631             */
632            protected String[] getRequest( final String[] nameArray ) {
633                    String[] rtn = new String[nameArray.length];
634    
635                    for( int i=0; i<rtn.length; i++ ) {
636                            rtn[i] = getRequestValue( nameArray[i] );
637    
638                            // 3.8.0.5 (2005/08/20) checkNames ãŒã‚りã?rtn[i] ãŒã‚ã‚‹å?åˆã?
639                            if( checkNames != null && checkNames.length() > 0 && rtn[i].length() > 0 ) {
640                                    if( ( "," + checkNames + "," ).indexOf( "," + nameArray[i] + "," ) >= 0 ) {
641                                            DBColumn dbColumn = getDBColumn( nameArray[i] );
642                                            String val = dbColumn.valueSet( rtn[i] );
643                                            if( val != null ) { rtn[i] = val; }
644                                    }
645                            }
646                    }
647    
648                    return rtn;
649            }
650    
651            /**
652             * ã€TAGã€?通常ã¯ä½¿ã?¾ã›ã‚“)ãƒ??ã‚¿ã®èª­ã¿å§‹ã‚ã®åˆæœŸå€¤ã‚’指定ã—ã¾ã™ã?
653             *
654             * @og.tag
655             * ãƒ??タベã?ス自体ã?検索ã¯,æŒ?®šã•れãŸSQLã®å…¨ä»¶ã‚’検索ã—ã¾ã™ãŒ,
656             * DBTableModelã®ãƒ??ã‚¿ã¨ã—ã¦ã¯ã€ã‚¹ã‚­ãƒ??ä»¶æ•°åˆ??登録ã•れã¾ã›ã‚“ã€?
657             * サーãƒã?ã®ãƒ¡ãƒ¢ãƒªè³?ºã¨å¿œç­”時間ã?確ä¿ã?為ã§ã™ã?
658             *
659             * @param       count 読ã¿å§‹ã‚ã®åˆæœŸå€¤
660             */
661            public void setSkipRowCount( final String count ) {
662                    skipRowCount = nval( getRequestParameter( count ),skipRowCount );
663            }
664    
665            /**
666             * ã€TAGã€?通常ã¯ä½¿ã?¾ã›ã‚“)ãƒ??ã‚¿ã®æœ?¤§èª­ã¿è¾¼ã¿ä»¶æ•°ã‚’指定ã—ã¾ã?
667             *              (åˆæœŸå€¤:DB_MAX_ROW_COUNT[={@og.value org.opengion.hayabusa.common.SystemData#DB_MAX_ROW_COUNT}])ã€?
668             *
669             * @og.tag
670             * ãƒ??タベã?ス自体ã?検索ã¯,æŒ?®šã•れãŸSQLã®å…¨ä»¶ã‚’検索ã—ã¾ã™ãŒ,
671             * DBTableModelã®ãƒ??ã‚¿ã¨ã—ã¦ç™»éŒ²ã™ã‚‹æœ?¤§ä»¶æ•°ã‚’ã“ã®å€¤ã«è¨­å®šã—ã¾ã™ã?
672             * サーãƒã?ã®ãƒ¡ãƒ¢ãƒªè³?ºã¨å¿œç­”時間ã?確ä¿ã?為ã§ã™ã?
673             * 0 ã‚’ã‚»ãƒ?ƒˆã™ã‚‹ã¨ã€ç„¡åˆ¶é™?Integer.MAX_VALUE)ã«ãªã‚Šã¾ã™ã?
674             * (åˆæœŸå€¤:ユーザー定数ã®DB_MAX_ROW_COUNT[={@og.value org.opengion.hayabusa.common.SystemData#DB_MAX_ROW_COUNT}])ã€?
675             *
676             * @og.rev 5.5.8.5 (2012/11/27) 0を無制é™ã¨ã—ã¦å‡¦ç?—ã¾ã™ã?
677             *
678             * @param       count æœ?¤§èª­ã¿è¾¼ã¿ä»¶æ•°
679             * @see         org.opengion.hayabusa.common.SystemData#DB_MAX_ROW_COUNT
680             */
681            public void setMaxRowCount( final String count ) {
682                    maxRowCount = nval( getRequestParameter( count ),maxRowCount );
683                    if( maxRowCount == 0 ) { maxRowCount = Integer.MAX_VALUE ; }            // 5.5.8.5 (2012/11/27)
684            }
685    
686            /**
687             * ã€TAGã€?通常ã¯ä½¿ã?¾ã›ã‚“)çµæžœã®DBTableModelã‚’ã?sessionã«ç™»éŒ²ã™ã‚‹ã¨ãã?キーを指定ã—ã¾ã?åˆæœŸå€¤:HybsSystem.TBL_MDL_KEY)ã€?
688             *
689             * @og.tag
690             * æ¤œç´¢çµæžœã‚ˆã‚Šã€DBTableModelオブジェクトを作æ?ã—ã¾ã™ã?ã“れをã?以下ã?view ç­‰ã?ã‚¿ã‚°ã«
691             * 渡ã™å?åˆã«ã€??常ã¯ã€session を利用ã—ã¾ã™ã?ãã?å ´åˆã?登録キーã§ã™ã?
692             * query ã‚¿ã‚°ã‚’åŒæ™‚ã«å®Ÿè¡Œã—ã¦ã€çµæžœã‚’求ã‚ã‚‹å?åˆã?åŒä¸?ƒ¡ãƒ¢ãƒªã«é…ç½®ã•れる為ã€?
693             * ã“ã? tableId 属æ?を利用ã—ã¦ã€ãƒ¡ãƒ¢ãƒªç©ºé–“ã‚’åˆ?‘ã¾ã™ã?
694             * åˆæœŸå€¤ã¯ã€HybsSystem.TBL_MDL_KEY (={@og.value org.opengion.hayabusa.common.HybsSystem#TBL_MDL_KEY})ã§ã™ã?
695             *
696             * @param       id sessionã«ç™»éŒ²ã™ã‚‹æ™‚ã? ID
697             */
698            public void setTableId( final String id ) {
699                    tableId   = nval( getRequestParameter( id ),tableId );  // 3.8.0.9 (2005/10/17)
700            }
701    
702            /**
703             * ã€TAG】Query を発行ã™ã‚‹ç‚ºã®ã‚¯ãƒ©ã‚¹ID(JDBC,JDBCCallable,JDBCErrMsg,JDBCUpdate)を指定ã—ã¾ã?{@og.doc03Link queryType åˆæœŸå€¤:JDBC})ã€?
704             *
705             * @og.tag
706             * 検索を実行ã™ã‚‹æ‰‹æ®µã¯ã€Query インターフェースã®å®Ÿè£?‚¯ãƒ©ã‚¹ã«ãªã‚Šã¾ã™ã?
707             * ã“ã?ã‚¿ã‚°ã§ã¯ã€Query.execute( String[] ) メソãƒ?ƒ‰ãŒå‘¼ã°ã‚Œã¾ã™ã?
708             * 例ãˆã°ã€ã‚¹ãƒˆã‚¢ãƒ‰ã?ロシージャ等を実行ã™ã‚‹å?åˆã«ã€queryType="JDBCErrMsg"
709             * を指定ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã?
710             * åˆæœŸå€¤ã¯ã€?JDBC" ã§ã™ã?
711             * queryType ã¯ã€ã‚·ã‚¹ãƒ?ƒ ãƒªã‚½ãƒ¼ã‚¹ã® Query_**** 宣è¨?? **** を与ãˆã¾ã™ã?
712             * ã“れらã?ã€Query インターフェースを継承ã—ãŸã‚µãƒ–クラスã§ã‚ã‚‹å¿?¦ãŒã‚りã¾ã™ã?
713             * 標準ã§ã€org.opengion.hayabusa.db 以下ã? Query_**** クラスãŒã?Query_**** 宣è¨?ã¨
714             * ã—ã¦ã€å®šç¾©ã•れã¦ã?¾ã™ã?
715             * 属æ?クラス定義㮠{@link org.opengion.hayabusa.db.Query Query} ã‚’å‚照願ã„ã¾ã™ã?
716             * {@og.doc03Link queryType Query_**** クラス}
717             *
718             * @param       id Query を発行ã™ã‚‹ç‚ºã®å®Ÿã‚¯ãƒ©ã‚¹ ID
719             * @see         org.opengion.hayabusa.db.Query  Queryã®ã‚µãƒ–クラス
720             * @see         org.opengion.hayabusa.db.Query#execute( String[] )
721             */
722            public void setQueryType( final String id ) {
723                    queryType = getRequestParameter( id );
724            }
725    
726            /**
727             * ã€TAGã€?通常ã¯ä½¿ã?¾ã›ã‚“)Queryオブジェクトを作æ?ã™ã‚‹æ™‚ã?DB接続IDを指定ã—ã¾ã™ã?
728             *
729             * @og.tag
730             * Queryオブジェクトを作æ?ã™ã‚‹æ™‚ã?DB接続IDを指定ã—ã¾ã™ã?
731             * ã“れã¯ã€ã‚·ã‚¹ãƒ?ƒ ãƒªã‚½ãƒ¼ã‚¹ã§ã€DEFAULT_DB_URL ç­‰ã§æŒ?®šã—ã¦ã?‚‹ ãƒ??タベã?ス接続å?
732             * æƒ??ã«ã€XX_DB_URL を定義ã™ã‚‹ã“ã¨ã§ã€?dbid="XX" ã¨ã™ã‚‹ã¨ã€ã“㮠接続å?を使用ã—ã¦
733             * ãƒ??タベã?スã«ã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã™ã?
734             *
735             * @param       id ãƒ??タベã?ス接続ID
736             */
737            public void setDbid( final String id ) {
738                    dbid = nval( getRequestParameter( id ),dbid );
739            }
740    
741            /**
742             * ã€TAG】コマンãƒ?NEW,RENEW)ã‚’ã‚»ãƒ?ƒˆã—ã¾ã?PlsqlUpdateTag,UpdateTag ã®å ´åˆã?ã€ENTRY)ã€?
743             *
744             * @og.tag
745             * コマンドã?,HTMLã‹ã‚‰(get/post)æŒ?®šã•れã¾ã™ã?ã§,CMD_xxx ã§è¨­å®šã•れる
746             * フィールド定数値ã®ã?¥ã‚Œã‹ã‚’ã?æŒ?®šã§ãã¾ã™ã?
747             *
748             * @param       cmd コマンãƒ?public static final 宣è¨?•れã¦ã?‚‹æ–?­—å?)
749             * @see         <a href="{&#064;docRoot}/constant-values.html#org.opengion.hayabusa.taglib.QueryTag.CMD_NEW">コマンド定数</a>
750             */
751            public void setCommand( final String cmd ) {
752                    String cmd2 = getRequestParameter( cmd );
753                    if( cmd2 != null && cmd2.length() >= 0 ) { command = cmd2.toUpperCase(Locale.JAPAN); }
754            }
755    
756            /**
757             * ã€TAGã€‘æ¤œç´¢çµæžœãŒï¼ä»¶ã®ã¨ãå?ç?‚’続行ã™ã‚‹ã‹ã©ã?‹[true/false]を指定ã—ã¾ã?åˆæœŸå€¤:false[続行ã™ã‚‹])ã€?
758             *
759             * @og.tag
760             * åˆæœŸå€¤ã¯ã€false(続行ã™ã‚?ã§ã™ã?
761             *
762             * @param  cmd æ¤œç´¢çµæžœãŒï¼ä»¶ã®ã¨ãã?[true:処ç?‚’中止ã™ã‚‹/false:続行ã™ã‚‹]
763             */
764            public void setStopZero( final String cmd ) {
765                    stopZero = nval( getRequestParameter( cmd ),stopZero );
766            }
767    
768            /**
769             * ã€TAGã€‘æ¤œç´¢çµæžœã‚’ç”»é¢ä¸Šã«è¡¨ç¤ºã™ã‚‹ãƒ¡ãƒ?‚»ãƒ¼ã‚¸ãƒªã‚½ãƒ¼ã‚¹IDを指定ã—ã¾ã?
770             *              (åˆæœŸå€¤:VIEW_DISPLAY_MSG[={@og.value org.opengion.hayabusa.common.SystemData#VIEW_DISPLAY_MSG}])ã€?
771             *
772             * @og.tag
773             * ã“ã“ã§ã¯ã€æ¤œç´¢çµæžœã®ä»¶æ•°ã‚?™»éŒ²ã•れãŸä»¶æ•°ã‚’ã¾ãšå?力ã—ã€?
774             * ãã?次ã«ã€ã“ã“ã§æŒ?®šã—ãŸãƒ¡ãƒ?‚»ãƒ¼ã‚¸ã‚’リソースã‹ã‚‰å–å¾—ã—ã¦è¡¨ç¤ºã—ã¾ã™ã?
775             * 件数を表示ã•ã›ãŸã„å ´åˆã?ã€displayMsg = "MSG0033"[ã€?»¶æ¤œç´¢ã—ã¾ã—ãŸ] ã‚’ã‚»ãƒ?ƒˆã—ã¦ãã ã•ã„ã€?
776             * 表示ã•ã›ãŸããªã??åˆã?, displayMsg = "" ã‚’ã‚»ãƒ?ƒˆã—ã¦ãã ã•ã„ã€?
777             * (åˆæœŸå€¤:シスãƒ?ƒ å®šæ•°ã®VIEW_DISPLAY_MSG[={@og.value org.opengion.hayabusa.common.SystemData#VIEW_DISPLAY_MSG}])ã€?
778             *
779             * @param       id ãƒ?‚£ã‚¹ãƒ—レイã«è¡¨ç¤ºã•ã›ã‚‹ãƒ¡ãƒ?‚»ãƒ¼ã‚¸ ID
780             * @see         org.opengion.hayabusa.common.SystemData#VIEW_DISPLAY_MSG
781             */
782            public void setDisplayMsg( final String id ) {
783                    String ids = getRequestParameter( id );
784                    if( ids != null ) { displayMsg = ids; }
785            }
786    
787            /**
788             * ã€TAG】検索ãƒ??ã‚¿ãŒæœ€å¤§æ¤œç´¢æ•°ã‚’オーãƒã?ã—ãŸå ´åˆã«è¡¨ç¤ºã™ã‚‹ãƒ¡ãƒ?‚»ãƒ¼ã‚¸ãƒªã‚½ãƒ¼ã‚¹IDを指定ã—ã¾ã?
789             *              (åˆæœŸå€¤:MSG0007[æ¤œç´¢çµæžœãŒã?制é™è¡Œæ•°ã‚’è¶?ˆã¾ã—ãŸã®ã§ã€æ®‹ã‚Šã¯ã‚«ãƒ?ƒˆã•れã¾ã—ãŸ])ã€?
790             *
791             * @og.tag
792             * æ¤œç´¢çµæžœãŒã?maxRowCount ã§è¨­å®šã•れãŸå€¤ã‚ˆã‚Šå¤šã„å ´åˆã?何らã‹ã?ãƒ??ã‚¿ã¯æ¤œç´¢ã•れã?
793             * åˆ?‚Šæ¨ã¦ã‚‰ã‚ŒãŸã“ã¨ã«ãªã‚Šã¾ã™ã?
794             * ã“ã“ã§ã¯ã€displayMsg を表示ã—ãŸå¾Œã?å¿?¦ã«å¿œã˜ã¦ã€ã“ã®ãƒ¡ãƒ?‚»ãƒ¼ã‚¸ã‚’表示ã—ã¾ã™ã?
795             * 表示ã•ã›ãŸããªã??åˆã?, overflowMsg = "" ã‚’ã‚»ãƒ?ƒˆã—ã¦ãã ã•ã„ã€?
796             * åˆæœŸå€¤ã¯ã€MSG0007[æ¤œç´¢çµæžœãŒã?制é™è¡Œæ•°ã‚’è¶?ˆã¾ã—ãŸã®ã§ã€æ®‹ã‚Šã¯ã‚«ãƒ?ƒˆã•れã¾ã—ãŸ]ã§ã™ã?
797             *
798             * @param       id ãƒ?‚£ã‚¹ãƒ—レイã«è¡¨ç¤ºã•ã›ã‚‹ãƒ¡ãƒ?‚»ãƒ¼ã‚¸ ID
799             */
800            public void setOverflowMsg( final String id ) {
801                    String ids = getRequestParameter( id );
802                    if( ids != null ) { overflowMsg = ids; }
803            }
804    
805            /**
806             * ã€TAGã€‘æ¤œç´¢çµæžœãŒã‚¼ãƒ­ä»¶ã®å ´åˆã«è¡¨ç¤ºã™ã‚‹ãƒ¡ãƒ?‚»ãƒ¼ã‚¸ãƒªã‚½ãƒ¼ã‚¹IDを指定ã—ã¾ã?åˆæœŸå€¤:MSG0077[対象ãƒ??ã‚¿ã¯ã‚りã¾ã›ã‚“ã§ã—ãŸ])ã€?
807             *
808             * @og.tag
809             * ã“ã“ã§ã¯ã€æ¤œç´¢çµæžœãŒã‚¼ãƒ­ä»¶ã®å ´åˆã?ã¿ã€ç‰¹åˆ¥ãªãƒ¡ãƒ?‚»ãƒ¼ã‚¸ã‚’表示ã•ã›ã¾ã™ã?
810             * 従æ¥ã¯ã€displayMsg ã¨å…¼ç”¨ã§ã€ã?0ã€?»¶æ¤œç´¢ã—ã¾ã—ãŸã€ã¨ã?†è¡¨ç¤ºã§ã—ãŸãŒã?
811             * displayMsg ã®åˆæœŸè¡¨ç¤ºã¯ã€OFF ã«ãªã‚Šã¾ã—ãŸã®ã§ã€ã‚¼ãƒ­ä»¶ã®å ´åˆã?ã¿åˆ¥ã«è¡¨ç¤ºã•ã›ã¾ã™ã?
812             * 表示ã•ã›ãŸããªã??åˆã?, notfoundMsg = "" ã‚’ã‚»ãƒ?ƒˆã—ã¦ãã ã•ã„ã€?
813             * åˆæœŸå€¤ã¯ã€MSG0077[対象ãƒ??ã‚¿ã¯ã‚りã¾ã›ã‚“ã§ã—ãŸ]ã§ã™ã?
814             *
815             * @param       id ãƒ?‚£ã‚¹ãƒ—レイã«è¡¨ç¤ºã•ã›ã‚‹ãƒ¡ãƒ?‚»ãƒ¼ã‚¸ ID
816             */
817            public void setNotfoundMsg( final String id ) {
818                    String ids = getRequestParameter( id );
819                    if( ids != null ) { notfoundMsg = ids; }
820            }
821    
822            /**
823             * ã€TAG】PL/SQLを利用ã™ã‚‹å ´åˆã?引数ã«ã‚»ãƒ?ƒˆã™ã¹ã?ãƒ??ã‚¿ã®åç§°ã‚’CSVå½¢å¼ã§è¤?•°æŒ?®šã—ã¾ã™ã?
824             *
825             * @og.tag
826             * è¤?•°ã‚ã‚‹å ´åˆã?ã€ã‚«ãƒ³ãƒžåŒºåˆ?‚Šæ–?­—ã§æ¸¡ã—ã¾ã™ã?
827             * names 属æ?ã¯ã€queryType ã«å¿œã˜ã¦è¨­å®šå¯å¦ãŒç•°ãªã‚Šã¾ã™ã?ã§ã€ã”注æ„ãã?•ã??
828             * names ãªã—:JDBC,JDBCUpdate
829             * names ã‚り?šJDBCCallable,JDBCErrMsg,JDBCUpdate
830             * (JDBCUpdateã¯ã€names 属æ?ã®ã‚り/ãªã—両方ã«å¯¾å¿œã—ã¦ã?¾ã™ã?)
831             *
832             * @og.rev 3.0.1.3 (2003/03/11) names 属æ?ã« null ã§æ¸¡ã™å?åˆã?ãƒã‚°ã‚’修正
833             *
834             * @param       nm 引数ã®åç§°(è¤?•°ã‚ã‚‹å ´åˆã?ã€ã‚«ãƒ³ãƒžåŒºåˆ?‚Šæ–?­?
835             */
836            public void setNames( final String nm ) {
837                    names = nval( getRequestParameter( nm ),names );
838            }
839    
840            /**
841             * ã€TAGã€‘æ¤œç´¢çµæžœã®ãƒ¡ãƒ?‚»ãƒ¼ã‚¸ã‚’表示ã™ã‚‹/ã—ãªã„[true/false]を指定ã—ã¾ã?åˆæœŸå€¤:true)ã€?
842             *
843             * @og.tag
844             * åˆæœŸå€¤ã¯ã€è¡¨ç¤ºã™ã‚‹?štrue ã§ã™ã?
845             *
846             * @param       flag  [true:表示ã™ã‚‹/ãれ以å¤?å«ã‚ãªã„]
847             */
848            public void setOutMessage( final String flag ) {
849                    outMessage = nval( getRequestParameter( flag ),outMessage );
850            }
851    
852            /**
853             * ã€TAG】引数㮠SQL æ–?‚’ EXPLAIN PLAN ã‚’[true:行ã†/ãれ以å¤?行ã‚ãªã„]を指定ã—ã¾ã?åˆæœŸå€¤:false)ã€?
854             *
855             * @og.tag
856             *
857             * ã“ã“ã§ã¯ã€ä»¥ä¸‹ã?処ç?‚’行ã„ã¾ã™ã?
858             * ?‘.引数㮠SQL æ–?‚’ç”»é¢ã«è¡¨ç¤ºã—ã¾ã™ã?
859             * ?’.引数㮠SQL æ–?‚’ EXPLAIN PLAN ã—ãŸçµæžœã‚’ã?ç”»é¢ã«è¡¨ç¤ºã—ã¾ã™ã?
860             * ãªãŠã?以å‰ã?ã€ã‚»ãƒ?‚·ãƒ§ãƒ³ã®ãƒˆãƒ¬ãƒ¼ã‚¹ã‚’行ã£ã¦ã?¾ã—ãŸãŒã?ãã?機è?ã¯ã€å»?­¢ã?Ÿã—ã¾ã™ã?
861             * åˆæœŸå€¤ã¯ã€è¡Œã‚ãªã?¼šfalse ã§ã™ã?
862             *
863             * @param       flag トレース [true:行ã†/ãれ以å¤?行ã‚ãªã„]
864             */
865            public void setTrace( final String flag ) {
866                    trace = nval( getRequestParameter( flag ),trace );
867            }
868    
869            /**
870             * ã€TAGã€‘ãƒªã‚¯ã‚¨ã‚¹ãƒˆå¤‰æ•°ã®æ­£è¦åŒ–を行ã†ã‚«ãƒ©ãƒ?‚’CSVå½¢å¼ã§è¤?•°æŒ?®šã—ã¾ã™ã?
871             *
872             * @og.tag
873             * PL/SQLを利用ã™ã‚‹å ´åˆã?引数ã«ã‚»ãƒ?ƒˆã™ã¹ã?ãƒ??ã‚¿ã‚’ã?リクエスト変数ã®
874             * 値ãã?ã¾ã¾ã§ã¯ãªãã?カラãƒ?‚ªãƒ–ジェクトã? valueSet メソãƒ?ƒ‰çµŒç”±ã§æ­£è¦åŒ–
875             * ã—ãŸå€¤ã‚’使用ã™ã‚‹ã‚ˆã†ã«ã—ã¾ã™ã?
876             *
877             * @og.rev 3.8.0.5 (2005/08/20) æ–°è¦è¿½åŠ?
878             *
879             * @param       nm ãƒªã‚¯ã‚¨ã‚¹ãƒˆå¤‰æ•°ã®æ­£è¦åŒ–を行ã†ã‚«ãƒ©ãƒ?
880             */
881            public void setCheckNames( final String nm ) {
882                    checkNames = nval( getRequestParameter( nm ),checkNames );
883            }
884    
885            /**
886             * ã€TAG】DB検索時ã? モãƒ?‚£ãƒ•ァイタイプをæŒ?®šã—ã¾ã™[A:追åŠ?C:æ›´æ–°/D:削除]ã€?
887             *
888             * @og.tag
889             * DB検索時ã«ã€ãã®ãƒ??ã‚¿ã‚’A(追åŠ?ã€C(æ›´æ–°)ã€D(削除)ã®ãƒ¢ãƒ?‚£ãƒ•ァイタイプを
890             * ã¤ã‘ãŸçŠ¶æ…‹ã«ã—ã¾ã™ã?
891             * ãã?状態ã§ã€ãã®ã¾ã¾ã€update ã™ã‚‹äº‹ãŒå¯èƒ½ã«ãªã‚Šã¾ã™ã?
892             *
893             * @og.rev 3.8.5.1 (2006/05/08) æ–°è¦è¿½åŠ?
894             *
895             * @param   type DB検索時ã? モãƒ?‚£ãƒ•ァイタイãƒ?[A:追åŠ?C:æ›´æ–°/D:削除]
896             */
897            public void setModifyType( final String type ) {
898                    modifyType = nval( getRequestParameter( type ),modifyType );
899            }
900    
901            /**
902             * ã€TAG】リクエスト情報㮠クォーãƒ?‚£ã‚·ãƒ§ãƒ³(') 存在ãƒã‚§ãƒ?‚¯ã‚’実施ã™ã‚‹ã‹ã©ã?‹[true/false]を設定ã—ã¾ã?
903             *              (åˆæœŸå€¤:USE_SQL_INJECTION_CHECK[={@og.value org.opengion.hayabusa.common.SystemData#USE_SQL_INJECTION_CHECK}])ã€?
904             *
905             * @og.tag
906             * ?³?±?¬ã‚¤ãƒ³ã‚¸ã‚§ã‚¯ã‚·ãƒ§ãƒ³å¯¾ç­–ã?ä¸?¤ã¨ã—ã¦ã€æš«å®šçš„ã§ã¯ã‚りã¾ã™ãŒã€SQLã®ãƒ‘ラメータã«
907             * æ¸¡ã™æ–‡å­—å?ã«ã‚¯ã‚©ãƒ¼ãƒ?‚£ã‚·ãƒ§ãƒ³(') を許ã•ãªã?¨­å®šã«ã™ã‚Œã°ã€ã‚る程度ã¯é˜²æ­¢ã§ãã¾ã™ã?
908             * 数字タイプã?引数ã«ã¯ã€?or 5=5 ãªã©ã®ã‚¯ã‚©ãƒ¼ãƒ?‚£ã‚·ãƒ§ãƒ³ã‚’使用ã—ãªã?‚³ãƒ¼ãƒ‰ã‚’埋ã‚ã¦ã‚‚ã?
909             * æ•°å­—ãƒã‚§ãƒ?‚¯ã§æ¤œå?å¯èƒ½ã§ã™ã?æ–?­—タイプã?å ´åˆã?ã€å¿?š (')ã‚’ã?ãšã—ã¦ã€?
910             * ' or 'A' like 'A ã®ã‚ˆã†ãªå½¢å¼ã«ãªã‚‹ç‚ºã€?')ãƒã‚§ãƒ?‚¯ã?‘ã§ã‚‚有効ã§ã™ã?
911             * (') ãŒå«ã¾ã‚Œã¦ã?Ÿã‚¨ãƒ©ãƒ¼ã«ã™ã‚‹(true)?ã‹ãƒŽã?ãƒã‚§ãƒ?‚¯ã?false)を指定ã—ã¾ã™ã?
912             * åˆæœŸå€¤ã¯ã€SystemData#USE_SQL_INJECTION_CHECK ã§ã™ã?
913             *
914             * @og.rev 4.0.0.0 (2005/08/31) æ–°è¦è¿½åŠ?
915             *
916             * @param   flag クォーãƒ?‚£ã‚·ãƒ§ãƒ³ãƒã‚§ãƒ?‚¯ [true:ã™ã‚‹/ãれ以å¤?ã—ãªã„]
917             */
918            public void setQuotCheck( final String flag ) {
919                    quotCheck = nval( getRequestParameter( flag ),quotCheck );
920            }
921    
922            /**
923             * ã€TAG】リクエスト情報㮠HTMLTagé–‹å§?終äº?–‡å­?&gt;&lt;) 存在ãƒã‚§ãƒ?‚¯ã‚’実施ã™ã‚‹ã‹ã©ã?‹[true/false]を設定ã—ã¾ã?
924             *              (åˆæœŸå€¤:USE_XSS_CHECK[={@og.value org.opengion.hayabusa.common.SystemData#USE_XSS_CHECK}])ã€?
925             *
926             * @og.tag
927             * クロスサイトスクリプティング(XSS)対策ã?ä¸?’°ã¨ã—ã¦less/greater than signã«ã¤ã?¦ã®ãƒã‚§ãƒ?‚¯ã‚’行ã„ã¾ã™ã?
928             * (&gt;&lt;) ãŒå«ã¾ã‚Œã¦ã?Ÿã‚¨ãƒ©ãƒ¼ã«ã™ã‚‹(true)?ã‹ãƒŽã?ãƒã‚§ãƒ?‚¯ã?false)を指定ã—ã¾ã™ã?
929             * (åˆæœŸå€¤:シスãƒ?ƒ å®šæ•°ã®USE_XSS_CHECK[={@og.value org.opengion.hayabusa.common.SystemData#USE_XSS_CHECK}])
930             *
931             * @og.rev 5.0.0.2 (2009/09/15) æ–°è¦è¿½åŠ?
932             *
933             * @param       flag    XSSãƒã‚§ãƒ?‚¯ [true:ã™ã‚‹/false:ã—ãªã„]
934             * @see         org.opengion.hayabusa.common.SystemData#USE_XSS_CHECK
935             */
936            public void setXssCheck( final String flag ) {
937                    xssCheck = nval( getRequestParameter( flag ),xssCheck );
938            }
939    
940            /**
941             * ã€TAG】PLSQL/SQL処ç?‚¨ãƒ©ãƒ¼ã®æ™‚ã«å‡¦ç?‚’中止ã™ã‚‹ã‹ã©ã?‹[true/false]を設定ã—ã¾ã?åˆæœŸå€¤:true)ã€?
942             *
943             * @og.tag
944             * false(中止ã—ãªã?ã«è¨­å®šã™ã‚‹å?åˆã?後続å?ç?§ã¯ã€{&#064;DB.ERR_CODE}ã®å€¤ã«ã‚ˆã‚Šã€?
945             * PLSQL/SQLã®ç•°å¸¸/正常終äº?«ã‚ˆã£ã¦åˆ?²å?ç??å¯èƒ½ã¨ãªã‚Šã¾ã™ã?
946             * åˆæœŸå€¤ã¯ã€true(中止ã™ã‚‹)ã§ã™ã?
947             *
948             * @og.rev 4.3.3.0 (2008/09/22) æ–°è¦è¿½åŠ?
949             *
950             * @param   flag  [true:中止ã™ã‚‹/false:中止ã—ãªã„]
951             */
952            public void setStopError( final String flag ) {
953                    stopError = nval( getRequestParameter( flag ),stopError );
954            }
955    
956            /**
957             * 引数㮠SQL æ–?‚’ EXPLAIN PLAN ã—ã¾ã™ã?
958             *
959             * ã“ã“ã§ã¯ã€ä»¥ä¸‹ã?処ç?‚’行ã„ã¾ã™ã?
960             * ?‘.引数㮠SQL æ–?‚’ç”»é¢ã«è¡¨ç¤ºã—ã¾ã™ã?
961             * ?’.引数㮠SQL æ–?‚’ EXPLAIN PLAN ã—ãŸçµæžœã‚’ã?ç”»é¢ã«è¡¨ç¤ºã—ã¾ã™ã?
962             * ãªãŠã?ã“ã?処ç??ã€ORACLE 専用処ç?§ã™ã?
963             *
964             * @og.rev 3.8.5.3 (2006/08/07) æ–°è¦è¿½åŠ?
965             * @og.rev 3.8.7.0 (2006/12/15) アクセスログå–å¾—ã?為,ApplicationInfoオブジェクトを設å®?
966             * @og.rev 5.1.9.0 (2010/08/01) Transaction 対応ã—ã¾ã™ã?
967             * @og.rev 5.5.3.4 (2012/06/19) getUserInfo ã¯ã€ã‚­ãƒ¼éƒ¨åˆ? ã‘ã§å‡¦ç?—ã¾ã™ã?
968             *
969             * @param   sql         EXPLAIN PLANã™ã‚‹SQL æ–?
970             * @param   tran        Transactionオブジェク�
971             *
972             * @return ãƒˆãƒ¬ãƒ¼ã‚¹çµæžœã®æ–?­—å?
973             */
974    //      private String traceQuery( final String sql ) {
975            private String traceQuery( final String sql , final Transaction tran ) {
976    //              ApplicationInfo appInfo = getApplicationInfo();
977    
978    //              String userId = getUserInfo( "USER.ID" ) ;
979                    String userId = getUserInfo( "ID" ) ;                   // 5.5.3.4 (2012/06/19) getUserInfo ã¯ã€ã‚­ãƒ¼éƒ¨åˆ? ã‘ã§å‡¦ç?—ã¾ã™ã?
980    
981                    String[] arg1 = new String[] { userId };
982    //              DBUtil.dbExecute( "DELETE FROM PLAN_TABLE WHERE STATEMENT_ID = ?",arg1,appInfo,dbid );
983                    DBUtil.dbExecute( "DELETE FROM PLAN_TABLE WHERE STATEMENT_ID = ?",arg1,tran,dbid );             // 5.1.9.0 (2010/08/01)
984    
985                    String explan1 = "EXPLAIN PLAN SET STATEMENT_ID = '" + userId + "' FOR " + sql ;
986    //              DBUtil.dbExecute( explan1,null,appInfo,dbid );
987                    DBUtil.dbExecute( explan1,null,tran,dbid );             // 5.1.9.0 (2010/08/01)
988    
989                    String[] arg2 = new String[] { userId,userId,userId };
990    //              String explan2 = "SELECT LEVEL,LPAD(' ',LEVEL,' ') || RTRIM( OPERATION ) || ' ' ||"
991    //                                              + " RTRIM( OPTIONS )   || ' ' || RTRIM( OBJECT_NAME )"
992    //                                              + " FROM PLAN_TABLE"
993    //                                              + " WHERE STATEMENT_ID = ?"
994    //                                              + " CONNECT BY PRIOR ID = PARENT_ID"
995    //                                              + "         AND STATEMENT_ID = ?"
996    //                                              + " START WITH ID = 0"
997    //                                              + "         AND STATEMENT_ID = ?" ;
998                    String explan2 = "select LEVEL as LVL"
999                                                            + ",lpad(' ',LEVEL,' ') || rtrim( OPERATION ) || ' ' || rtrim( OPTIONS ) || ' ' || rtrim( OBJECT_NAME ) as EXECUTION_PLAN"
1000                                                            + ",OBJECT_NAME                 as OBJ_NAME"
1001                                                            + ",DECODE(INSTR(OBJECT_TYPE,' '),0,OBJECT_TYPE,SUBSTR(OBJECT_TYPE,1,INSTR(OBJECT_TYPE,' ')-1)) as OBJ_TYPE"
1002                                                            + ",OPTIMIZER                   as OPT"
1003                                                            + ",COST                                as CST"
1004                                                            + ",CARDINALITY                 as CARD"
1005                                                            + ",BYTES                               as BYTE"
1006                                                            + ",ACCESS_PREDICATES   as ACCS"
1007                                                            + ",FILTER_PREDICATES   as FILTER"
1008                                                    + " from PLAN_TABLE"
1009                                                    + " where STATEMENT_ID = ?"
1010                                                    + " start with ID = 0"
1011                                                    + "       and STATEMENT_ID = ?"
1012                                                    + " connect by prior ID = PARENT_ID"
1013                                                    + "       and STATEMENT_ID = ?" ;
1014    //              String[][] plan = DBUtil.dbExecute( explan2,arg2,appInfo,dbid );
1015    //              String[][] plan = DBUtil.dbExecute( explan2,arg2,tran,dbid );                   // 5.1.9.0 (2010/08/01)
1016    
1017    //              StringBuilder buf = new StringBuilder( HybsSystem.BUFFER_MIDDLE );
1018    //              buf.append( "<pre>" ).append( sql ).append( "</pre>" ).append( HybsSystem.BR );
1019    //              buf.append( "<table>" );
1020    //              buf.append( "<tr  class=\"row_h\"><th>LEVEL</th><th>EXECUTION_PLAN</th></tr>" );
1021    //              for( int i=0; i<plan.length; i++ ) {
1022    //                      buf.append( "<tr class=\"row_" ).append( i%2 ).append( "\">" );
1023    //                      buf.append( "<td>" ).append( plan[i][0] ).append( "</td>" );
1024    //                      buf.append( "<td><pre>" ).append( plan[i][1] ).append( "</td></tr>" );
1025    //              }
1026    //              buf.append( "</table>" ).append( HybsSystem.BR );
1027    
1028                    String[][] plan = DBUtil.dbExecute( explan2,arg2,tran,dbid,true );                      // 5.5.3.4 (2012/06/19) ヘッãƒ??æƒ??ã‚‚åŒæ™‚ã«å–å¾—ã™ã‚‹ã?
1029    
1030                    StringBuilder buf = new StringBuilder( HybsSystem.BUFFER_MIDDLE );
1031                    buf.append( "<pre>" ).append( sql ).append( "</pre>" ).append( HybsSystem.BR );
1032                    buf.append( "<table>" );
1033                    // 1行目ã®ãƒ˜ãƒƒãƒ??ã®å‡ºåŠ?
1034                    int colsize = plan[0].length;
1035                    buf.append( "<tr class=\"row_h\">" );
1036                    for( int j=0; j<colsize; j++ ) {
1037                            buf.append( "<th>" ).append( plan[0][j] ).append( "</th>" );
1038                    }
1039                    buf.append( "</tr>" );
1040    
1041                    for( int i=1; i<plan.length; i++ ) {
1042                            buf.append( "<tr class=\"row_" ).append( i%2 ).append( "\">" );
1043                            for( int j=0; j<colsize; j++ ) {
1044                                    if( j==1 ) {
1045                                            buf.append( "<td><pre>" ).append( plan[i][1] ).append( "</pre></td>" );
1046                                    }
1047                                    else {
1048                                            buf.append( "<td>" ).append( plan[i][j] ).append( "</td>" );
1049                                    }
1050                            }
1051                            buf.append( "</tr>" );
1052                    }
1053                    buf.append( "</table>" ).append( HybsSystem.BR );
1054                    return buf.toString();
1055            }
1056    
1057            /**
1058             * ã€TAGã€?通常使ã?¾ã›ã‚“)ã‚¿ã‚°ã§å‡¦ç?•れる処ç?Œãƒ¡ã‚¤ãƒ³ã¨ãªã‚‹ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³å‡¦ç?‹ã©ã?‹ã‚’指定ã—ã¾ã?åˆæœŸå€¤:true)ã€?
1059             *
1060             * @og.tag
1061             * ã“ã?値ã¯ã€ãƒ•ァイルãƒ?‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰å?ç?«å½±éŸ¿ã—ã¾ã™ã?ã“ã?値ãŒtrueã«æŒ?®šã•ã‚ŒãŸæ™‚ã«commitã•れãŸDBTableModelã?
1062             * ファイルãƒ?‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã?対象ã®è¡¨ã«ãªã‚Šã¾ã™ã?
1063             *
1064             * ã“ã?パラメーターã¯ã€??常ã€å„ã‚¿ã‚°ã«ã‚ˆã‚Šå®Ÿè£?•れã?ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒæŒ‡å®šã™ã‚‹å¿?¦ã?ã‚りã¾ã›ã‚“ã€?
1065             * ä½?—ã€?ã¤ã®JSPå†?§DBTableModelãŒè¤?•°ç”Ÿæ?ã•れるå?åˆã«ã€å‰ã«å‡¦ç?—ãŸDBTableModelã«ã¤ã?¦ãƒ•ァイルãƒ?‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã‚’ã•ã›ãŸã„
1066             * å ´åˆã?ã€å¾Œã‚ã§DBTableModelを生æˆã™ã‚‹ã‚¿ã‚°ã§ã€æ?示çš?«ã“ã?値をfalseã«æŒ?®šã™ã‚‹ã“ã¨ã§ã€ãƒ•ァイルãƒ?‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰å?ç??対象ã‹ã‚‰
1067             * 除外ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã?
1068             *
1069             * @og.rev 5.1.6.0 (2010/05/01) æ–°è¦ä½œæ?
1070             *
1071             * @param  flag メイントランザクションã‹ã©ã?‹
1072             */
1073            public void setMainTrans( final String flag ) {
1074                    isMainTrans = nval( getRequestParameter( flag ),isMainTrans );
1075            }
1076    
1077            /**
1078             * ã€TAGã€?処ç?™‚é–?queryTime)ãªã©ã®æƒ??出力[true:有効/false:無効]を指定ã—ã¾ã?åˆæœŸå€¤:true)ã€?
1079             *
1080             * @og.tag
1081             * Query ã§ã€æ¤œç´¢ã™ã‚‹å ´åˆã«ã€å?ç?™‚é–?queryTime)ãªã©ã®æƒ??ã‚’å?力ã—ã¦ã?¾ã™ãŒã€?
1082             * ViewForm ã§ã€CustomData ãªã©ã® éžHTML表示ビューを使用ã™ã‚‹å ´åˆã?ãƒ??ã‚¿ã¨ã—ã¦ã€?
1083             * 紛れ込んã§ã—ã¾ã?Ÿã‚ã?出力を抑制ã™ã‚‹å¿?¦ãŒã‚りã¾ã™ã?
1084             * true(有効)ã«ã™ã‚‹ã¨ã€ã“れらã®HTMLãŒå?力ã•れã¾ã™ã?false ã«ã™ã‚‹ã¨ã€å?力ã•れã¾ã›ã‚“ã€?
1085             * åˆæœŸå€¤ã¯ã€true(有効) ã§ã™ã?
1086             *
1087             * @og.rev 5.3.5.0 (2011/05/01) æ–°è¦è¿½åŠ?
1088             *
1089             * @param  useTag  æƒ??出力ã?有効/無効を指å®?[true:有効/false:無効]
1090             */
1091            public void setUseBeforeHtmlTag( final String useTag ) {
1092                    useBeforeHtmlTag = nval( getRequestParameter( useTag ),useBeforeHtmlTag );
1093            }
1094    
1095            /**
1096             * シリアライズ用ã®ã‚«ã‚¹ã‚¿ãƒ?‚·ãƒªã‚¢ãƒ©ã‚¤ã‚ºæ›¸ãè¾¼ã¿ãƒ¡ã‚½ãƒ?ƒ‰
1097             *
1098             * @og.rev 4.0.0.0 (2006/09/31) æ–°è¦è¿½åŠ?
1099             * @serialData
1100             *
1101             * @param       strm    ObjectOutputStreamオブジェク�
1102             */
1103            private void writeObject( final ObjectOutputStream strm ) throws IOException {
1104                    strm.defaultWriteObject();
1105            }
1106    
1107            /**
1108             * シリアライズ用ã®ã‚«ã‚¹ã‚¿ãƒ?‚·ãƒªã‚¢ãƒ©ã‚¤ã‚ºèª­ã¿è¾¼ã¿ãƒ¡ã‚½ãƒ?ƒ‰
1109             *
1110             * ã“ã“ã§ã¯ã€transient 宣è¨?•れãŸå†?ƒ¨å¤‰æ•°ã®å†??åˆæœŸåŒ–ãŒå¿?¦ãªãƒ•ィールドã?ã¿è¨­å®šã—ã¾ã™ã?
1111             *
1112             * @og.rev 4.0.0.0 (2006/09/31) æ–°è¦è¿½åŠ?
1113             * @serialData
1114             *
1115             * @param       strm    ObjectInputStreamオブジェク�
1116             * @see #release2()
1117             */
1118            private void readObject( final ObjectInputStream strm ) throws IOException , ClassNotFoundException {
1119                    strm.defaultReadObject();
1120            }
1121    
1122            /**
1123             * ã“ã?オブジェクトã?æ–?­—å?表ç¾ã‚’è¿”ã—ã¾ã™ã?
1124             * 基本çš?«ãƒ?ƒãƒ?‚°ç›®çš?«ä½¿ç”¨ã—ã¾ã™ã?
1125             *
1126             * @return ã“ã?ã‚¯ãƒ©ã‚¹ã®æ–?­—å?表ç¾
1127             */
1128            @Override
1129            public String toString() {
1130                    return sql ;
1131    
1132            //      return org.opengion.fukurou.util.ToString.title( this.getClass().getName() )
1133            //                      .println( "VERSION"                     ,VERSION                )
1134            //                      .println( "tableId"                     ,tableId                )
1135            //                      .println( "queryType"           ,queryType              )
1136            //                      .println( "dbid"                        ,dbid                   )
1137            //                      .println( "command"                     ,command                )
1138            //                      .println( "skipRowCount"        ,skipRowCount   )
1139            //                      .println( "maxRowCount"         ,maxRowCount    )
1140            //                      .println( "sql"                         ,sql                    )
1141            //                      .println( "displayMsg"          ,displayMsg             )
1142            //                      .println( "overflowMsg"         ,overflowMsg    )
1143            //                      .println( "executeCount"        ,executeCount   )
1144            //                      .println( "names"                       ,names                  )
1145            //                      .println( "outMessage"          ,outMessage             )
1146            //                      .println( "trace"                       ,trace                  )
1147            //                      .println( "errCode"                     ,errCode                )
1148            //                      .println( "stopZero"            ,stopZero               )
1149            //                      .println( "quotCheck"           ,quotCheck              )
1150            //                      .println( "dyStart"                     ,dyStart                )
1151            //                      .println( "checkNames"          ,checkNames             )
1152            //                      .println( "Other..."            ,getAttributes().getAttribute() )
1153            //                      .fixForm().toString() ;
1154            }
1155    }