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             * @og.rev 4.0.0.0 (2005/01/31) getParameterRows() を使用するように変更
356             *
357             * @return      選択行ã?配å?
358             */
359            @Override
360            protected int[] getParameterRows() {
361                    final int[] rowNo ;
362                    if( selectedAll ) {
363                            int rowCnt = table.getRowCount();               // 3.5.5.7 (2004/05/10)
364                            rowNo = new int[ rowCnt ];
365                            for( int i=0; i<rowCnt; i++ ) {
366                                    rowNo[i] = i;
367                            }
368                    } else {
369                            rowNo = super.getParameterRows();               // 4.0.0 (2005/01/31)
370                    }
371                    return rowNo ;
372            }
373    
374            /**
375             * 【TAG】Queryオブジェクトに渡す引数のタイプ定義(ä¾?type名_ARRAY)ã€?
376             *
377             * @og.tag
378             * ここでは、type 定義のPL/SQL名をæŒ?®šしますã?
379             * 行を表すé?列ã?、type名_ARRAY とã�?�†名称ですã?
380             *
381             * @param  type 定義のPL/SQLå�?
382             */
383            public void setDbType( final String type ) {
384                    userDBType = getRequestParameter( type );
385            }
386    
387            /**
388             * 【TAG】データをå?件選択済みとして処ç�?�™るかどã�?�‹[true/false]を指定しまã�?初期値:false)ã€?
389             *
390             * @og.tag
391             * 全てのãƒ??タを選択済みãƒ??タとして扱って処ç�?�—ますã?
392             * 全件処ç�?�™るå?合にã€?true/false)を指定しますã?
393             * 初期値は false ですã?
394             *
395             * @param  all ãƒ??タをå?件選択済み [true:全件選択済み/false:通常]
396             */
397            public void setSelectedAll( final String all ) {
398                    selectedAll = nval( getRequestParameter( all ),selectedAll );
399            }
400    
401            /**
402             * 【TAG】Query を発行する為のクラスIDを指定しまã�?{@og.doc03Link queryType 初期値:JDBCPLSQL})ã€?
403             *
404             * @og.tag
405             * 引数æŒ?®šã?INSERT/UPDATEæ–?‚’実行するå?合ã?、queryType 属æ?を使用しますã?
406             * こã?タグでは、execute( String ,String , DBSysArg[] , DBUserArg[] )を実行しますã?
407             * 代表çš?�ªクラスとしてã€?JDBCPLSQL" が標準で用意されてã�?�¾すã?
408             *
409             * タグにより使用できる/出来なã�?�Œありますが、これã?、org.opengion.hayabusa.db
410             * 以下ã? Query_**** クラスの **** を与えますã?
411             * これらã?、Query インターフェースを継承したサブクラスですã?
412             * {@og.doc03Link queryType Query_**** クラス}
413             *
414             * @og.rev 3.5.4.2 (2003/12/15) JavaDocコメント用にメソãƒ?ƒ‰追åŠ??
415             *
416             * @param       id Query を発行する為の実クラス ID
417             * @see         org.opengion.hayabusa.db.Query  Queryのサブクラス
418             * @see         org.opengion.hayabusa.db.Query#execute( String ,String , DBSysArg[] , DBUserArg[] )
419             */
420            @Override
421            public void setQueryType( final String id ) {
422                    super.setQueryType( nval( id,"JDBCPLSQL" ) );
423            }
424            
425            /**
426             * 【TAG】テーブルモãƒ?ƒ«に対する確定å?ç�?‚’行うかどã�?�‹を指定しまã�?初期値:true)ã€?
427             *
428             * @og.tag
429             * PlsqlUpdateタグで、エラーがなかったå?合ã?通常、テーブルモãƒ?ƒ«の改å»?�«従って処ç�?�Œ行われますã?
430             * ?ˆ改廃Dにつã�?�¦は削除処ç�?‚’行い、その他につã�?�¦は改å»?‚’å…?�«戻すï¼?
431             *
432             * こã?パラメータをfalseにæŒ?®šすると、テーブルモãƒ?ƒ«に対する処ç�?‚’行いませんã€?
433             * これは、例えばPL/SQLでエラーチェãƒ?‚¯のみを行いたい場合に有効ですã?
434             * 初期値はtrue(処ç�?‚’行う?‰ですã?
435             *
436             * @og.rev 5.5.5.2 (2012/08/10) 新規作æ?
437             *
438             * @param  flag ãƒ??ブルモãƒ?ƒ«に対する処ç�?‚’行うかどã�?�‹
439             */
440            public void setTableModelCommit( final String flag ) {
441                    isTableModelCommit = nval( getRequestParameter( flag ),isTableModelCommit );
442            }
443    
444            /**
445             * こã?オブジェクトã?æ–?­—å?表現を返しますã?
446             * 基本çš?�«ãƒ?ƒ�ãƒ?‚°目çš?�«使用しますã?
447             *
448             * @return こã?クラスのæ–?­—å?表現
449             */
450            @Override
451            public String toString() {
452                    return org.opengion.fukurou.util.ToString.title( this.getClass().getName() )
453                                    .println( "VERSION"             ,VERSION        )
454                                    .println( "selectedAll" ,selectedAll    )
455                                    .fixForm().toString()
456                            + HybsSystem.CR
457                            + super.toString() ;
458            }
459    }