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 }