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.Query;
022    import org.opengion.hayabusa.db.DBSysArg;
023    import org.opengion.hayabusa.db.DBUserArg;
024    import org.opengion.hayabusa.resource.GUIInfo;
025    
026    import org.opengion.fukurou.util.ErrorMessage;
027    import org.opengion.fukurou.util.StringUtil ;
028    import static org.opengion.fukurou.util.StringUtil.nval ;
029    
030    /**
031     * PLSQLã‚’CALLã—ã¦ãƒ??タベã?スã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ã‚¿ã‚°ã§ã™ã?
032     * queryType = "JDBCPLSQL" ãŒã?標準ã§ç”¨æ„ã•れã¦ã?¾ã™ã?
033     * queryType 㨠実際ã®Javaクラスã¨ã®é–¢é€£ä»˜ã‘ã¯ã€ã‚·ã‚¹ãƒ?ƒ ãƒªã‚½ãƒ¼ã‚¹ã® Query_JDBCPLSQL 属æ?ã§ã™ã?
034     *
035     * DBTableModelå†??ãƒ??ã‚¿ã‚?é…å?ã§PL/SQLã«æ¸¡ã—ã¦DB登録ã—ã¾ã™ã?
036     *
037     * ※ ã“ã?ã‚¿ã‚°ã¯ã€Transaction ã‚¿ã‚°ã®å¯¾è±¡ã§ã™ã?
038     *
039     * @og.formSample
040     * â—å½¢å¼ï¼?lt;og:plsqlUpdate command="…" names="…" dbType="…" queryType="JDBCPLSQL" >{plsql(?,?,?,?,?)} <og:plsqlUpdate>
041     * â—body?šã‚ã‚?EVAL_BODY_BUFFERED:BODYを評価ã—ã?{@XXXX} ã‚’è§£æžã—ã¾ã?
042     *
043     * â—Tag定義??
044     *   <og:plsqlUpdate
045     *       queryType          ã€TAG】Query を発行ã™ã‚‹ç‚ºã®ã‚¯ãƒ©ã‚¹IDを指定ã—ã¾ã?{@og.doc03Link queryType åˆæœŸå€¤:JDBCPLSQL})
046     *       command            ã€TAG】コマンãƒ?NEW,RENEW)ã‚’ã‚»ãƒ?ƒˆã—ã¾ã?PlsqlUpdateTag,UpdateTag ã®å ´åˆã?ã€ENTRY)
047     *       scope              ã€TAG】キャãƒ?‚·ãƒ¥ã™ã‚‹å ´åˆã?スコープ[request/page/session/applicaton]を指定ã—ã¾ã?åˆæœŸå€¤:session)
048     *       maxRowCount        ã€TAGã€?通常ã¯ä½¿ã?¾ã›ã‚“)ãƒ??ã‚¿ã®æœ?¤§èª­ã¿è¾¼ã¿ä»¶æ•°ã‚’指定ã—ã¾ã?(åˆæœŸå€¤:DB_MAX_ROW_COUNT[=1000])(0:[無制é™])
049     *       skipRowCount       ã€TAGã€?通常ã¯ä½¿ã?¾ã›ã‚“)ãƒ??ã‚¿ã®èª­ã¿å§‹ã‚ã®åˆæœŸå€¤ã‚’指定ã—ã¾ã?
050     *       notfoundMsg        ã€TAGã€‘æ¤œç´¢çµæžœãŒã‚¼ãƒ­ä»¶ã®å ´åˆã«è¡¨ç¤ºã™ã‚‹ãƒ¡ãƒ?‚»ãƒ¼ã‚¸ãƒªã‚½ãƒ¼ã‚¹IDを指定ã—ã¾ã?åˆæœŸå€¤:MSG0077[対象ãƒ??ã‚¿ã¯ã‚りã¾ã›ã‚“ã§ã—ãŸ])
051     *       names              ã€TAG】PL/SQLを利用ã™ã‚‹å ´åˆã?引数ã«ã‚»ãƒ?ƒˆã™ã¹ã?ãƒ??ã‚¿ã®åç§°ã‚’CSVå½¢å¼ã§è¤?•°æŒ?®šã—ã¾ã?
052     *       dbType             ã€TAG】Queryã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã«æ¸¡ã™å¼•æ•°ã®ã‚¿ã‚¤ãƒ—定義(ä¾?typeå_ARRAY)
053     *       selectedAll        ã€TAG】データをå?ä»¶é¸æŠžæ¸ˆã¿ã¨ã—ã¦å‡¦ç?™ã‚‹ã‹ã©ã?‹[true/false]を指定ã—ã¾ã?åˆæœŸå€¤:false)
054     *       tableId            ã€TAGã€?通常ã¯ä½¿ã?¾ã›ã‚“)çµæžœã®DBTableModelã‚’ã?sessionã«ç™»éŒ²ã™ã‚‹ã¨ãã?キーを指定ã—ã¾ã?
055     *       dbid               ã€TAGã€?通常ã¯ä½¿ã?¾ã›ã‚“)Queryオブジェクトを作æ?ã™ã‚‹æ™‚ã?DB接続IDを指定ã—ã¾ã?
056     *       stopError          ã€TAG】PLSQL/SQL処ç?‚¨ãƒ©ãƒ¼ã®æ™‚ã«å‡¦ç?‚’中止ã™ã‚‹ã‹ã©ã?‹[true/false]を設定ã—ã¾ã?åˆæœŸå€¤:true)
057     *       tableModelCommit   ã€TAG】テーブルモãƒ?ƒ«ã®ç¢ºå®šå?ç?‚’行ã†ã‹ã©ã?‹[true/false]を設定ã—ã¾ã?åˆæœŸå€¤:true)
058     *       debug              ã€TAG】デãƒãƒƒã‚°æƒ??ã‚’å?力ã™ã‚‹ã‹ã©ã?‹[true/false]を指定ã—ã¾ã?åˆæœŸå€¤:false)
059     *   >   ... Body ...
060     *   </og:plsqlUpdate>
061     *
062     * â—使用ä¾?
063     *    ・引数/プロシジャーを他ã?JSPã‹ã‚‰æ¸¡ã™å?å?
064     *    ã€copy.jspã€?
065     *        <og:hidden name="names" value="UNIQ,USRID,ECNO,EDBN" />
066     *        <og:hidden name="SQL" value="{ call RKP0271E.RK0271E( ?,?,?,?,? ) }" />
067     *    ã€entry.jspã€?
068     *        <og:plsqlUpdate
069     *            command    = "{@command}"
070     *            names      = "{@names}"         →PL/SQLã«æ¸¡ã™å¼•æ•°(é…å?)ã®ã‚«ãƒ©ãƒ?
071     *            dbType     = "RK0271ARG"             →PL/SQLã«æ¸¡ã™å¼•æ•°(é…å?)ã®å®šç¾©ãƒ•ァイルå?
072     *            queryType  = "JDBCPLSQL" >
073     *        {@SQL}                              →CALLã™ã‚‹PL/SQL
074     *        </og:plsqlUpdate>
075     *
076     *    ・引数/プロシジャーを直接書ãå?å?
077     *    ã€entry.jspã€?
078     *        <og:plsqlUpdate
079     *            command    = "{@command}"
080     *            names      = "UNIQ,USRID,ECNO,EDBN"  →PL/SQLã«æ¸¡ã™å¼•æ•°(é…å?)ã®ã‚«ãƒ©ãƒ?
081     *            dbType     = "RK0271ARG"             →PL/SQLã«æ¸¡ã™å¼•æ•°(é…å?)ã®å®šç¾©ãƒ•ァイルå?
082     *            queryType  = "JDBCPLSQL" >
083     *        { call RKP0271E.RK0271E( ?,?,?,?,? )}    →CALLã™ã‚‹PL/SQL
084     *        </og:plsqlUpdate>
085     *
086     *    ?œï¼œå‚è€?¼žï¼?
087     *    ・RKP0271E.RK0271E( ?,?,?,?,? )ã®?¢??£ã®æ„味
088     *        (RKP0271E.spc)------------------------------------------------------------
089     *        CREATE OR REPLACE PACKAGE RKP0271E AS
090     *        PROCEDURE RK0271E(
091     *             P_KEKKA    OUT    NUMBER           -- 1個目ã®?¢??£â‡’çµæžœ 0:正常 1:è­¦å‘?2:異常
092     *            ,P_ERRMSGS  OUT    ERR_MSG_ARRAY    -- 2個目ã®?¢??£â‡’エラーメãƒ?‚»ãƒ¼ã‚¸é…å?
093     *            ,P_NAMES     IN    VARCHAR2         -- 3個目ã®?¢??£â‡’カラãƒ?ãƒã‚§ãƒ?‚¯ç”¨æ–?­—å?
094     *            ,P_SYSARGS   IN    SYSARG_ARRAY     -- 4個目ã®?¢??£â‡’登録æ¡ä»¶é…å?(改å»?A:追åŠ?C:変更/D:削除)ç­‰ãŒ?¾?¯??•れã¾ã?
095     *            ,P_RK0271    IN    RK0271ARG_ARRAY  -- 5個目ã®?¢??£â‡’登録ãƒ??ã‚¿é…å?
096     *
097     *    ・RK0271ARGã®å®šç¾©ã®ä»•æ–¹
098     *        (RK0271ARG.sql)------------------------------------------------------------
099     *        DROP TYPE RK0271ARG_ARRAY;
100     *        CREATE OR REPLACE TYPE RK0271ARG AS OBJECT
101     *        (
102     *             UNIQ                VARCHAR2(11)
103     *            ,USRID               VARCHAR2(5)
104     *            ,ECNO                VARCHAR(7)
105     *            ,EDBN                VARCHAR(2)
106     *        ) ;
107     *        /
108     *        CREATE OR REPLACE TYPE RK0271ARG_ARRAY AS VARRAY(100) OF RK0271ARG;
109     *        /
110     *
111     * @og.group ?¤?¢ç™»éŒ²
112     *
113     * @version  4.0
114     * @author   Kazuhiko Hasegawa
115     * @since    JDK5.0,
116     */
117    public class PlsqlUpdateTag extends QueryTag {
118            //* ã“ã?プログラãƒ??VERSIONæ–?­—å?を設定ã—ã¾ã™ã?       {@value} */
119            private static final String VERSION = "5.5.5.2 (2012/08/10)" ;
120    
121            private static final long serialVersionUID = 555220120810L ;
122    
123            /** command å¼•æ•°ã«æ¸¡ã™äº‹ã?出æ¥ã‚?コマンãƒ? 登録{@value} */
124            public static final String CMD_ENTRY  = "ENTRY" ;
125            /** command å¼•æ•°ã«æ¸¡ã™äº‹ã?出æ¥ã‚?コマンãƒ?リスãƒ? */
126            private static  final String COMMAND_LIST = CMD_ENTRY;
127    
128            /** 引数ã®ã‚¿ã‚¤ãƒ—定義  */
129            protected String  userDBType = null;
130    
131            // 3.5.2.0 (2003/10/20) å†?ƒ¨ã‚ªãƒ–ジェクトタイプåã‚?シスãƒ?ƒ ãƒ‘ラメータ ã§å®šç¾©ã—ã¾ã™ã?
132            private static final String SYSARG = "SYSARG";
133            private boolean selectedAll = false;
134            
135            private boolean isTableModelCommit = true; // 5.5.5.2 (2012/08/10)
136    
137            /**
138             * Taglibã®é–‹å§‹ã‚¿ã‚°ãŒè¦‹ã¤ã‹ã£ãŸã¨ãã«å‡¦ç?™ã‚?doStartTag() ã‚?オーãƒã?ライドã—ã¾ã™ã?
139             *
140             * @return      後続å?ç??æŒ?¤º
141             */
142            @Override
143            public int doStartTag() {
144                    dyStart = System.currentTimeMillis();
145    
146                    table = (DBTableModel)getObject( tableId );
147                    if( table == null || table.getRowCount() == 0 ||
148                            ! check( command, COMMAND_LIST ) ) { return(SKIP_BODY); }
149    
150                    startQueryTransaction( tableId );               // 3.6.0.8 (2004/11/19)
151                    return( EVAL_BODY_BUFFERED );   // Body を評価ã™ã‚‹ã€? extends BodyTagSupport æ™?
152            }
153    
154            /**
155             * Taglibã®çµ‚äº?‚¿ã‚°ãŒè¦‹ã¤ã‹ã£ãŸã¨ãã«å‡¦ç?™ã‚?doEndTag() ã‚?オーãƒã?ライドã—ã¾ã™ã?
156             *
157             * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応ã?release2() ã‚?doEndTag()ã§å‘¼ã¶ã€?
158             * @og.rev 3.5.5.2 (2004/04/02) TaglibUtil.makeHTMLErrorTable メソãƒ?ƒ‰ã‚’利用
159             * @og.rev 3.6.0.8 (2004/11/19) DBTableModel をセーブã™ã‚‹æ™‚ã«ã€ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ãƒã‚§ãƒ?‚¯ã‚’行ã„ã¾ã™ã?
160             * @og.rev 3.6.1.0 (2005/01/05) オーãƒã?フロー時ã¨ç™»éŒ²ä»¶æ•°ã®è¡¨ç¤ºã‚’コメントã—ã¾ã™ã?
161             * @og.rev 4.3.3.0 (2008/09/22) æ¤œç´¢çµæžœã‚’ã?"DB.ERR_CODE" キーã§ãƒªã‚¯ã‚¨ã‚¹ãƒˆã«ã‚»ãƒ?ƒˆã™ã‚‹ã€?
162             * @og.rev 4.3.3.0 (2008/09/22) 属æ? stopError ã®è¨­å®šã«ã‚ˆã‚Šã€JSP処ç?‚’中止ã™ã‚‹ã‹ã©ã?‹ã‚’制御ã—ã¾ã™ã?
163             * @og.rev 4.3.5.7 (2009/03/22) アクセスカウントä¸å?åˆå¯¾å¿?
164             *
165             * @return      後続å?ç??æŒ?¤º
166             */
167            @Override
168            public int doEndTag() {
169                    debugPrint();           // 4.0.0 (2005/02/28)
170    
171                    String label = HybsSystem.BR;                           // 検索ã—ãªã‹ã£ãŸå?åˆã?
172                    if( check( command, COMMAND_LIST ) ) {
173    
174                            // 3.5.5.2 (2004/04/02) TaglibUtil.makeHTMLErrorTable メソãƒ?ƒ‰ã‚’利用
175                            String err = TaglibUtil.makeHTMLErrorTable( errMessage,getResource() );
176                            if( err != null && err.length() > 0 ) {
177                                    if( errCode >= ErrorMessage.NG ) {           // 異常ã®å ´å?
178                                            label = err;
179                                    }
180                                    setSessionAttribute( errMsgId,errMessage );
181                            }
182                            else {
183                                    removeSessionAttribute( errMsgId );
184                            }
185                            // 4.3.3.0 (2008/09/22) æ¤œç´¢çµæžœã‚’ã?"DB.ERR_CODE" キーã§ãƒªã‚¯ã‚¨ã‚¹ãƒˆã«ã‚»ãƒ?ƒˆã™ã‚‹ã€?
186                            setRequestAttribute( "DB.ERR_CODE", String.valueOf( errCode ) );
187    
188                            // 3.6.0.8 (2004/11/19) トランザクションãƒã‚§ãƒ?‚¯ã‚’行ã„ã¾ã™ã?
189                            // 4.0.0.0 (2007/11/29) 入れå­if ã®çµ±å?
190                            if( table != null && ! commitTableObject( tableId, table ) ) {
191                                    jspPrint( "PlsqlUpdateTag Query処ç?Œå‰²ã‚Šè¾¼ã¾ã‚Œã¾ã—ãŸã€?BTableModel ã¯ç™»éŒ²ã—ã¾ã›ã‚“ã€? );
192                                    return (SKIP_PAGE);
193                            }
194                    }
195    
196                    jspPrint( label );
197    
198    //              int rtnCode = EVAL_PAGE;
199    //              if( errCode >= ErrorMessage.NG )  {  // 異常
200    //                      rtnCode = SKIP_PAGE;
201    //              }
202    //              else {
203    //                      rtnCode = EVAL_PAGE;
204    //              }
205    
206                    // 4.0.0 (2005/01/31) 処ç?™‚間集è¨?
207                    long dyTime = System.currentTimeMillis()-dyStart;
208    
209                    // 4.0.0 (2005/01/31) セキュリãƒ?‚£ãƒã‚§ãƒ?‚¯(ãƒ??タアクセス件数登録)
210                    GUIInfo guiInfo = (GUIInfo) getSessionAttribute( HybsSystem.GUIINFO_KEY );
211                    executeCount = getParameterRows().length ; // 4.3.5.7 (2009/03/16) アクセス件数ä¸å?åˆå¯¾å¿œã?ãƒã‚§ãƒ?‚¯è¡Œã¨ä»®å®?
212                    if( guiInfo != null ) { guiInfo.addWriteCount( executeCount,dyTime,sql ); }
213                    // 4.3.3.0 (2008/09/22) 属æ? stopError ã®è¨­å®šã«ã‚ˆã‚Šã€å?ç?‚’中止ã™ã‚‹ã‹ã‚’判断ã—ã¾ã™ã?
214                    int rtnCode = ( ( errCode >= ErrorMessage.NG ) && ( stopError ) ) ? SKIP_PAGE : EVAL_PAGE;
215                    return( rtnCode );
216            }
217    
218            /**
219             * タグリブオブジェクトをリリースã—ã¾ã™ã?
220             * キャãƒ?‚·ãƒ¥ã•れã¦å†åˆ©ç”¨ã•れるã?ã§ã€ãƒ•ィールドã?åˆæœŸè¨­å®šã‚’行ã„ã¾ã™ã?
221             *
222             * @og.rev 2.0.0.4 (2002/09/27) カスタãƒ?‚¿ã‚°ã® release() メソãƒ?ƒ‰ã‚’ã?追åŠ?
223             * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応ã?release2() ã‚?doEndTag()ã§å‘¼ã¶ã€?
224             * @og.rev 3.5.2.0 (2003/10/20) sysDBType å»?­¢ã€‚SYSARG ã¯ã€ã‚·ã‚¹ãƒ?ƒ ãƒ‘ラメータ ã§å®šç¾©ã—ã¾ã™ã?
225             * @og.rev 5.5.5.2 (2012/08/10) isTableModelCommit追�
226             *
227             */
228            @Override
229            protected void release2() {
230                    super.release2();
231                    userDBType      = null;
232                    selectedAll     = false;
233                    isTableModelCommit = true; // 5.5.5.2 (2012/08/10)
234            }
235    
236            /**
237             * Query を実行ã—ã¾ã™ã?
238             *
239             * @og.rev 2.1.2.3 (2002/12/02) ãƒ??タベã?ス更新時ã«ã€æ›´æ–°ãƒ•ラグをセãƒ?ƒˆã™ã‚‹ã‚ˆã†ã«å¤‰æ›´
240             * @og.rev 3.5.0.0 (2003/09/17) カラãƒ?ã§ã¯ãªãã?カラãƒ?•ªå·ã‚’å?ã«æ±‚ã‚ã¦ãŠãæ–¹å¼ã«å¤‰æ›´ã€?
241             * @og.rev 3.5.2.0 (2003/10/20) å†?ƒ¨ã‚ªãƒ–ジェクトタイプåã‚?シスãƒ?ƒ ãƒ‘ラメータ ã§å®šç¾©ã—ã¾ã™ã?
242             * @og.rev 3.5.4.2 (2003/12/15) HTMLTableViewForm クラスå変更(â‡?ViewForm_HTMLTable)
243             * @og.rev 3.5.6.0 (2004/06/18) DBRowHeader ã®ãƒ‘ッケージプライベã?ト化ã«ä¼´ãªã?¤‰æ›´
244             * @og.rev 4.0.0.0 (2005/01/31) setArguments å»?­¢ã€Query#execute ã«ã€å¼•æ•°ã‚’ã™ã¹ã¦è¿½åŠ?
245             * @og.rev 4.3.0.0 (2008/07/22) DBSysArgã®å¼•æ•°ã«æ—¥ä»˜ã?PGã€ãƒ¦ãƒ¼ã‚¶ãƒ¼IDを追åŠ?
246             * @og.rev 5.5.5.2 (2012/08/10) isTableModelCommitã«ã‚ˆã‚‹ãƒ??ブルモãƒ?ƒ«ç¢ºå®šå?ç??コントロール
247             *
248             * @param   query オブジェク�
249             */
250            @Override
251            protected void execute( final Query query ) {
252                    try {
253                            if( names == null ) {
254                                    String errMsg = "names 属æ?ãŒã?設定ã•れã¦ã?¾ã›ã‚“ã€? + HybsSystem.CR
255                                                            + sql + HybsSystem.CR ;
256                                    throw new HybsSystemException( errMsg );                // 3.5.5.4 (2004/04/15) 引数ã®ä¸¦ã³é ?¤‰æ›´
257                            }
258                            else {
259                                    int[] rowNo = getParameterRows();
260                                    int rowCount = rowNo.length ;
261                                    if( rowCount > 0 ) {
262                                            String[] nameArray = StringUtil.csv2Array( names );
263                                            int[]    clmNo     = getTableColumnNo( nameArray );             // 3.5.0.0
264    
265                                            String curdate = HybsSystem.getDate( "yyyyMMddHHmmss" );        // 4.3.0.0
266                                            String pgid = getGUIInfoAttri( "KEY" );                                         // 4.3.0.0
267                                            String userid = getUser().getAttribute( "ID" );                         // 4.3.0.0
268    
269                                            DBSysArg[]  sysArg  = new DBSysArg[rowCount];
270                                            DBUserArg[] userArg = new DBUserArg[rowCount];
271                                            for( int i=0; i<rowCount; i++ ) {
272                                                    int    row  = rowNo[i];
273                                                    String cdkh = table.getModifyType( row );
274    //                                              sysArg[i]  = new DBSysArg( SYSARG,row,cdkh );           // 3.5.2.0 // 4.3.0.0
275                                                    sysArg[i]  = new DBSysArg( SYSARG,row,cdkh,curdate,pgid,userid );
276                                                    String[] values = getTableModelData( clmNo,row );       // 3.5.0.0
277                                                    userArg[i] = new DBUserArg( userDBType,nameArray,values );
278                                            }
279                                            query.execute( names,userDBType + "_ARRAY",sysArg,userArg );
280                                            errCode = query.getErrorCode();
281                                            errMessage = query.getErrorMessage();
282    
283                                            if( errCode < ErrorMessage.NG ) {            // 異常以外ã?å ´å?
284                                                    query.commit();
285                                                    if( isTableModelCommit ) { // 5.5.5.2 (2012/08/10))
286                                                            for( int j=rowCount-1; j>=0; j-- ) {
287                                                                    int row = rowNo[j];
288                                                                    if( DBTableModel.DELETE_TYPE.equals( table.getModifyType( row ) ) ) {
289                                                                            table.removeValue( row );
290                                                                    }
291                                                                    else {
292                                                                            table.resetModify( row );
293                                                                    }
294                                                            }
295                                                    }
296                                            }
297                                            else {
298                                                    query.rollback();
299                                            }
300                                    }
301                            }
302                    }
303                    catch( HybsSystemException ex ) {
304                            query.rollback();
305                            throw ex;
306                    }
307                    finally {
308                            if( query != null ) { query.close(); }
309                    }
310            }
311    
312            /**
313             *  カラãƒ?é…å?(String[])よりã€å¯¾å¿œã™ã‚‹ã‚«ãƒ©ãƒ?oé…å?(int[])を作æ?ã—ã¾ã™ã?
314             *
315             * @og.rev 3.5.0.0 (2003/09/17) æ–°è¦è¿½åŠ?
316             *
317             * @param       nameArray カラãƒ?é…å?
318             *
319             * @return      カラãƒ?oé…å?
320             */
321            private int[] getTableColumnNo( final String[] nameArray ) {
322                    int[] clmNo = new int[ nameArray.length ];
323                    for( int i=0; i<clmNo.length; i++ ) {
324                            clmNo[i] = table.getColumnNo( nameArray[i] );
325                    }
326                    return clmNo;
327            }
328    
329            /**
330             *  æŒ?®šã?行番å·ã®ã€ã‚«ãƒ©ãƒ?oé…å?(int[])ã«å¯¾å¿œã—ãŸå?ã®é…å?ã‚’è¿”ã—ã¾ã™ã?
331             *
332             * 表示ãƒ??ã‚¿ã® HybsSystem.ROW_SEL_KEY ã‚’å?ã«ã€?¸ã°ã‚ŒãŸ 行を
333             * 処ç??対象ã¨ã—ã¾ã™ã?
334             *
335             * @og.rev 3.5.0.0 (2003/09/17) カラãƒ?ã§ã¯ãªãã?カラãƒ?•ªå·ã‚’å—ã‘å–るよã?«ä¿®æ­£ã€?
336             *
337             * @param       clmNo カラãƒ?oé…å?
338             * @param       row   行番å·
339             *
340             * @return      行番å·ã¨ã‚«ãƒ©ãƒ?oé…å?ã«å¯¾å¿œã—ãŸã?値ã®é…å?
341             */
342            private String[] getTableModelData( final int[] clmNo,final int row ) {
343                    String[] values = new String[ clmNo.length ];
344                    for( int i=0; i<values.length; i++ ) {
345                            values[i] = table.getValue( row,clmNo[i] ) ;
346                            // NUMBER タイプã?キャストエラーを防ã為ã®å¯¾å¿?
347                            if( values[i] != null && values[i].length() == 0 ) { values[i] = null; }
348                    }
349                    return values;
350            }
351    
352            /**
353             * 表示ãƒ??ã‚¿ã® HybsSystem.ROW_SEL_KEY ã‚’å?ã«ã€?¸ã°ã‚ŒãŸ 行を処ç??対象ã¨ã—ã¾ã™ã?
354             *
355             * <del>rowNo[] ã?null ã®å ´åˆã?ã¿ã€å–込を行ã„ã¾ã™ã?</del>
356             *
357             * @og.rev 4.0.0.0 (2005/01/31) getParameterRows() を使用ã™ã‚‹ã‚ˆã†ã«å¤‰æ›´
358             *
359             * @return      é¸æŠžè¡Œã?é…å?
360             */
361            @Override
362            protected int[] getParameterRows() {
363                    final int[] rowNo ;
364                    if( selectedAll ) {
365                            int rowCnt = table.getRowCount();               // 3.5.5.7 (2004/05/10)
366                            rowNo = new int[ rowCnt ];
367                            for( int i=0; i<rowCnt; i++ ) {
368                                    rowNo[i] = i;
369                            }
370                    } else {
371                            rowNo = super.getParameterRows();               // 4.0.0 (2005/01/31)
372                    }
373                    return rowNo ;
374            }
375    
376            /**
377             * ã€TAG】Queryã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã«æ¸¡ã™å¼•æ•°ã®ã‚¿ã‚¤ãƒ—定義(ä¾?typeå_ARRAY)ã€?
378             *
379             * @og.tag
380             * ã“ã“ã§ã¯ã€type 定義ã®PL/SQLåã‚’æŒ?®šã—ã¾ã™ã?
381             * 行を表ã™é?列ã?ã€typeå_ARRAY ã¨ã?†åç§°ã§ã™ã?
382             *
383             * @param  type 定義ã®PL/SQLå?
384             */
385            public void setDbType( final String type ) {
386                    userDBType = getRequestParameter( type );
387            }
388    
389            /**
390             * ã€TAG】データをå?ä»¶é¸æŠžæ¸ˆã¿ã¨ã—ã¦å‡¦ç?™ã‚‹ã‹ã©ã?‹[true/false]を指定ã—ã¾ã?åˆæœŸå€¤:false)ã€?
391             *
392             * @og.tag
393             * å…¨ã¦ã®ãƒ??ã‚¿ã‚’é¸æŠžæ¸ˆã¿ãƒ??ã‚¿ã¨ã—ã¦æ‰±ã£ã¦å‡¦ç?—ã¾ã™ã?
394             * 全件処ç?™ã‚‹å?åˆã«ã€?true/false)を指定ã—ã¾ã™ã?
395             * åˆæœŸå€¤ã¯ false ã§ã™ã?
396             *
397             * @param  all ãƒ??ã‚¿ã‚’å?ä»¶é¸æŠžæ¸ˆã¿ [true:å…¨ä»¶é¸æŠžæ¸ˆã¿/false:通常]
398             */
399            public void setSelectedAll( final String all ) {
400                    selectedAll = nval( getRequestParameter( all ),selectedAll );
401            }
402    
403            /**
404             * ã€TAG】Query を発行ã™ã‚‹ç‚ºã®ã‚¯ãƒ©ã‚¹IDを指定ã—ã¾ã?{@og.doc03Link queryType åˆæœŸå€¤:JDBCPLSQL})ã€?
405             *
406             * @og.tag
407             * 引数æŒ?®šã?INSERT/UPDATEæ–?‚’実行ã™ã‚‹å?åˆã?ã€queryType 属æ?を使用ã—ã¾ã™ã?
408             * ã“ã?ã‚¿ã‚°ã§ã¯ã€execute( String ,String , DBSysArg[] , DBUserArg[] )を実行ã—ã¾ã™ã?
409             * 代表çš?ªã‚¯ãƒ©ã‚¹ã¨ã—ã¦ã€?JDBCPLSQL" ãŒæ¨™æº–ã§ç”¨æ„ã•れã¦ã?¾ã™ã?
410             *
411             * ã‚¿ã‚°ã«ã‚ˆã‚Šä½¿ç”¨ã§ãã‚‹/出æ¥ãªã?Œã‚りã¾ã™ãŒã€ã“れã?ã€org.opengion.hayabusa.db
412             * 以下ã? Query_**** クラス㮠**** を与ãˆã¾ã™ã?
413             * ã“れらã?ã€Query インターフェースを継承ã—ãŸã‚µãƒ–クラスã§ã™ã?
414             * {@og.doc03Link queryType Query_**** クラス}
415             *
416             * @og.rev 3.5.4.2 (2003/12/15) JavaDocコメント用ã«ãƒ¡ã‚½ãƒ?ƒ‰è¿½åŠ??
417             *
418             * @param       id Query を発行ã™ã‚‹ç‚ºã®å®Ÿã‚¯ãƒ©ã‚¹ ID
419             * @see         org.opengion.hayabusa.db.Query  Queryã®ã‚µãƒ–クラス
420             * @see         org.opengion.hayabusa.db.Query#execute( String ,String , DBSysArg[] , DBUserArg[] )
421             */
422            @Override
423            public void setQueryType( final String id ) {
424                    super.setQueryType( nval( id,"JDBCPLSQL" ) );
425            }
426            
427            /**
428             * ã€TAG】テーブルモãƒ?ƒ«ã«å¯¾ã™ã‚‹ç¢ºå®šå?ç?‚’行ã†ã‹ã©ã?‹ã‚’指定ã—ã¾ã?åˆæœŸå€¤:true)ã€?
429             *
430             * @og.tag
431             * PlsqlUpdateã‚¿ã‚°ã§ã€ã‚¨ãƒ©ãƒ¼ãŒãªã‹ã£ãŸå?åˆã?通常ã€ãƒ†ãƒ¼ãƒ–ルモãƒ?ƒ«ã®æ”¹å»?«å¾“ã£ã¦å‡¦ç?Œè¡Œã‚れã¾ã™ã?
432             * ?ˆæ”¹å»ƒDã«ã¤ã?¦ã¯å‰Šé™¤å‡¦ç?‚’行ã„ã€ãã®ä»–ã«ã¤ã?¦ã¯æ”¹å»?‚’å…?«æˆ»ã™ï¼?
433             *
434             * ã“ã?パラメータをfalseã«æŒ?®šã™ã‚‹ã¨ã€ãƒ†ãƒ¼ãƒ–ルモãƒ?ƒ«ã«å¯¾ã™ã‚‹å‡¦ç?‚’行ã„ã¾ã›ã‚“ã€?
435             * ã“れã¯ã€ä¾‹ãˆã°PL/SQLã§ã‚¨ãƒ©ãƒ¼ãƒã‚§ãƒ?‚¯ã®ã¿ã‚’行ã„ãŸã„å ´åˆã«æœ‰åйã§ã™ã?
436             * åˆæœŸå€¤ã¯true(処ç?‚’行ã†?‰ã§ã™ã?
437             *
438             * @og.rev 5.5.5.2 (2012/08/10) æ–°è¦ä½œæ?
439             *
440             * @param  flag ãƒ??ブルモãƒ?ƒ«ã«å¯¾ã™ã‚‹å‡¦ç?‚’行ã†ã‹ã©ã?‹
441             */
442            public void setTableModelCommit( final String flag ) {
443                    isTableModelCommit = nval( getRequestParameter( flag ),isTableModelCommit );
444            }
445    
446            /**
447             * ã“ã?オブジェクトã?æ–?­—å?表ç¾ã‚’è¿”ã—ã¾ã™ã?
448             * 基本çš?«ãƒ?ƒãƒ?‚°ç›®çš?«ä½¿ç”¨ã—ã¾ã™ã?
449             *
450             * @return ã“ã?ã‚¯ãƒ©ã‚¹ã®æ–?­—å?表ç¾
451             */
452            @Override
453            public String toString() {
454                    return org.opengion.fukurou.util.ToString.title( this.getClass().getName() )
455                                    .println( "VERSION"             ,VERSION        )
456                                    .println( "selectedAll" ,selectedAll    )
457                                    .fixForm().toString()
458                            + HybsSystem.CR
459                            + super.toString() ;
460            }
461    }