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.fukurou.db.DBUtil;
022
023 import org.opengion.fukurou.util.ErrorMessage;
024 import org.opengion.fukurou.util.StringUtil ;
025 import static org.opengion.fukurou.util.StringUtil.nval ;
026 import org.opengion.fukurou.model.Formatter;
027
028 import java.util.Locale ;
029 import java.util.List ;
030 import java.util.ArrayList ;
031
032 import java.io.ObjectOutputStream;
033 import java.io.ObjectInputStream;
034 import java.io.IOException;
035
036 /**
037 * 【å»?¢】登録すべきデータのマスタ存在チェãƒ?‚¯を行うためのタグでã�?通常はentry.jspでupdateタグの直前で使用しまã�?ã€?
038 *
039 * こã?要ç´??å†?®¹に、SQLæ–?‚’記述しますã?
040 * names に対応するカラãƒ?��をã?カンマ区åˆ?‚Šでè¤?•°与えますã?そã?値をã?DBTableModel
041 * より、取得し、å?のSQLæ–?? ? に値を設定しますã?
042 * またã?、引数部に、[カラãƒ?��]を用ã�?�ŸHybs拡張SQLæ–?‚’æŒ?®šすることも可能ですã?
043 *
044 * 値の取得ã?、å?に選択された行ã?みにつã�?�¦、実行されますã?
045 * exist 属æ?にæŒ?®šされた ã€?½¢true:存在する?£ã€?½¢false:存在しなã�?½£ã€?½¢one:ひとつ以下」ã€?
046 * の値は、チェãƒ?‚¯方法を設定してã�?�¾すã?
047 * ã�?�šれã?場合も、æ?立時は、正常とみなしますã?
048 * (?¢true:存在する?£ には、データが存在した場合にã€?¼¯?«で、なければエラーですã?)
049 *
050 * @og.formSample
051 * ●形式ï¼?
052 * ・<og:tableExist
053 * command = "{@command}"
054 * names = "[…]"
055 * from = "…" å¿??
056 * where = "…" å¿??
057 * exist = "[auto|true|false|one|notuse]" å¿??
058 * errRemove = "[true|false]"
059 * />
060 *
061 * ●body?šなã�?
062 *
063 * ●Tag定義??
064 * <og:tableExist
065 * command 【å»?¢】コマンãƒ?ENTRY)をセãƒ?ƒˆしまã�?
066 * scope 【TAG】キャãƒ?‚·ュする場合ã?スコープ[request/page/session/applicaton]を指定しまã�?初期値:session)
067 * names 【å»?¢】引数にセãƒ?ƒˆすべã�?ãƒ??タの名称(カラãƒ?��)をCSV形式でè¤?•°æŒ?®šしまã�?
068 * from ○ã?å»?¢】チェãƒ?‚¯するãƒ??タベã?スå�?from 句)を指定しまã�?å¿??)ã€?
069 * where ○ã?å»?¢】チェãƒ?‚¯する検索条件(where句)を指定しまã�?å¿??)ã€?
070 * exist 【å»?¢】データベã?スのチェãƒ?‚¯方æ³?auto/true/false/one/notuse)を指定しまã�?初期値:?¢auto:自動」)
071 * tableId 【å»?¢ã€?通常は使ã�?�¾せん)結果をDBTableModelに書き込んで、sessionに登録するときã?キーを指定しまã�?
072 * dbid 【å»?¢ã€?通常は使ã�?�¾せん)Queryオブジェクトを作æ?する時ã?DB接続IDを指定しまã�?
073 * errRemove 【å»?¢】エラー時ã?選択行を取り除ã�?�¦継続å?ç�?‚’行うかどã�?�‹[true/false]を指定しまã�?初期値:false)
074 * debug 【TAG】デバッグæƒ??をå?力するかどã�?�‹[true/false]を指定しまã�?初期値:false)
075 * />
076 *
077 * ●使用ä¾?
078 * ・<og:tableExist
079 * command = "{@command}"
080 * names = "USERID,SYSTEM_ID"
081 * from = "GE10"
082 * where = "USERID=? AND SYSTEM_ID=?"
083 * exist = "true" />
084 *
085 * ・where 条件の ? æ–?—に、names でæŒ?®šしたカラãƒ?��の値がã?DBTableModelより
086 * 取得されますã?
087 * 値の取得ã?、å?に選択された行ã?みにつã�?�¦、実行されますã?
088 * ・exist 属æ?の値に応じて、チェãƒ?‚¯方法が異なりますã?
089 * auto , true , false , one , notuse が指定できますã?
090 * ・ãƒ??ブルはã€?¼‘つのみæŒ?®šできますã?è¤?•°æŒ?®šや、UNIONで結合する場合ã?ã€?
091 * ビュー等を作æ?して対応してくださいã€?
092 *
093 * ・<og:tableExist
094 * command = "{@command}"
095 * from = "GE10"
096 * where = "USERID=[USERID] AND SYSTEM_ID=[SYSTEM_ID]" />
097 *
098 * ・where 条件の [カラãƒ?��] æ–?—に、DBTableModelより値がセãƒ?ƒˆされますã?
099 * ・exist は、å?期å?(auto)になりますã?å†?ƒ¨のA,C,Dに応じて自動判別しますã?
100 *
101 * @og.rev 3.5.0.0 (2003/09/17) 新規作æ?
102 * @og.group (å»?¢)?¤?¢登録
103 *
104 * @version 4.0
105 * @author Kazuhiko Hasegawa
106 * @since JDK5.0,
107 * @deprecated 代わりに dataCheckタグを使用してください
108 */
109 @Deprecated public class TableExistTag extends CommonTagSupport {
110 //* こã?プログラãƒ??VERSIONæ–?—å?を設定しますã? {@value} */
111 private static final String VERSION = "4.0.0.0 (2007/11/28)" ;
112
113 private static final long serialVersionUID = 400020071128L ;
114
115 /** command 引数に渡す事ã?出来ã‚?コマンãƒ? エントリー {@value} */
116 public static final String CMD_ENTRY = "ENTRY" ;
117
118 /** command 引数に渡す事ã?出来ã‚?コマンãƒ?リスãƒ? */
119 private static final String COMMAND_LIST = CMD_ENTRY;
120
121 // 3.5.6.0 (2004/06/18) すべてã‚?protected から private に変更しますã?
122 private transient DBTableModel table = null;
123 private transient ErrorMessage errMessage = null;
124 private String tableId = HybsSystem.TBL_MDL_KEY;
125 // 4.0.0.0 (2007/10/10) dbid の初期値をã?"DEFAULT" から null に変更
126 // private String dbid = "DEFAULT";
127 private String dbid = null;
128 private String command = CMD_ENTRY;
129 private String sql = null;
130 private String names = null;
131 private String from = null;
132 private String where = null;
133 private String exist = "auto";
134 private boolean errRemove = false;
135
136 /**
137 * Taglibの開始タグが見つかったときに処ç�?�™ã‚?doStartTag() ã‚?オーバã?ライドしますã?
138 *
139 * @og.rev 3.7.1.0 (2005/04/15) notuse 値を追åŠ?
140 *
141 * @return 後続å?ç�??æŒ?¤º(SKIP_BODY)
142 */
143 @Override
144 public int doStartTag() {
145 if( !exist.equalsIgnoreCase( "notuse" ) ) {
146 table = (DBTableModel)getObject( tableId );
147 if( table != null && table.getRowCount() > 0 && check( command, COMMAND_LIST ) ) {
148 sql = makeSQLString();
149 execute( sql );
150 }
151 }
152
153 return(SKIP_BODY); // Body を評価しなã�?
154 }
155
156 /**
157 * Taglibの終äº?‚¿グが見つかったときに処ç�?�™ã‚?doEndTag() ã‚?オーバã?ライドしますã?
158 *
159 * @og.rev 3.5.4.2 (2003/12/15) HTMLTableViewForm クラス名変更(â‡?ViewForm_HTMLTable)
160 * @og.rev 3.5.4.4 (2004/01/16) エラー結果を表示するãƒ??ブル形式ã?フォーãƒ?¿®正
161 * @og.rev 3.5.5.2 (2004/04/02) TaglibUtil.makeHTMLErrorTable メソãƒ?ƒ‰を利用
162 *
163 * @return 後続å?ç�??æŒ?¤º
164 */
165 @Override
166 public int doEndTag() {
167 debugPrint(); // 4.0.0 (2005/02/28)
168
169 int rtnCode = EVAL_PAGE;
170
171 if( CMD_ENTRY.equals( command ) && errMessage != null && ! errMessage.isOK() ) {
172 // 3.5.5.2 (2004/04/02) TaglibUtil.makeHTMLErrorTable メソãƒ?ƒ‰を利用
173 if( !errRemove ) {
174 rtnCode = SKIP_PAGE ;
175 jspPrint( TaglibUtil.makeHTMLErrorTable( errMessage,getResource() ) );
176 }
177 }
178
179 return( rtnCode );
180 }
181
182 /**
183 * タグリブオブジェクトをリリースしますã?
184 * キャãƒ?‚·ュされて再利用されるã?で、フィールドã?初期設定を行いますã?
185 *
186 * @og.rev 4.0.0.0 (2007/10/10) dbid の初期値をã?"DEFAULT" から null に変更
187 */
188 @Override
189 protected void release2() {
190 super.release2();
191 tableId = HybsSystem.TBL_MDL_KEY;
192 // dbid = "DEFAULT";
193 dbid = null;
194 command = CMD_ENTRY;
195 table = null;
196 sql = null;
197 names = null;
198 errMessage = null;
199 exist = "auto";
200 errRemove = false;
201 }
202
203 /**
204 * SQLæ–?‚’構築しますã?
205 *
206 * @return 構築された、SQLæ–?
207 */
208 private String makeSQLString() {
209 StringBuilder rtn = new StringBuilder( HybsSystem.BUFFER_MIDDLE );
210 rtn.append( "select count(*) from " );
211 rtn.append( from );
212 rtn.append( " where " );
213 rtn.append( where );
214
215 return rtn.toString();
216 }
217
218 /**
219 * Query を実行しますã?
220 *
221 * @param sql 検索æ–?—å?
222 *
223 * @og.rev 3.8.6.0 (2006/09/29) exist 属æ?の one ã‚??¢one:ひとつのみ?£から?¢one:ひとつ以下」に変更
224 * @og.rev 3.8.7.0 (2006/12/15) アクセスログ取得ã?為,ApplicationInfoオブジェクトを設å®?
225 * @og.rev 4.0.0.0 (2005/01/31) getParameterRows() を使用するように変更
226 * @og.rev 4.0.0.0 (2007/11/28) 論理処ç�??不å?合修正(カãƒ?‚³の付ける位置間違ã�?
227 */
228 private void execute( final String sql ) {
229 errMessage = new ErrorMessage( "Database Exist Data Error!" );
230
231 final String query ;
232 final int[] clmNo ;
233
234 int[] rowNo = getParameterRows(); // 4.0.0 (2005/01/31)
235 if( rowNo.length == 0 ) { return; }
236
237 // names なしã?場合ã?、Query より取得するã? 4.0.0 (2005/01/31)
238 if( names == null ) {
239 // QueryForm form = new QueryForm( sql,table );
240 // clmNo = form.getColumnNos();
241 // query = form.getStatement();
242 // names = StringUtil.array2csv( form.getColumnNames() );
243
244 Formatter format = new Formatter( table );
245 format.setFormat( sql );
246 query = format.getQueryFormatString();
247 clmNo = format.getClmNos();
248 names = StringUtil.array2csv( table.getNames() );
249 }
250 else {
251 clmNo = getTableColumnNo( StringUtil.csv2Array( names ) );
252 query = sql;
253 }
254
255 int row;
256 boolean okFlag ;
257 List<Integer> list = new ArrayList<Integer>();
258 String[] values ;
259 for( int j=0; j<rowNo.length; j++ ) {
260 okFlag = true;
261 row = rowNo[j];
262 values = getTableModelData( clmNo,row );
263 int cnt = DBUtil.dbExist( query,values,getApplicationInfo(),dbid );
264
265 String modifyType = table.getModifyType( row );
266 if( ( exist.equalsIgnoreCase( "true" ) ||
267 ( exist.equalsIgnoreCase( "auto" ) && (
268 DBTableModel.UPDATE_TYPE.equals( modifyType ) ||
269 DBTableModel.DELETE_TYPE.equals( modifyType ) ) ) ) && cnt <= 0 ) {
270 // ERR0025=ãƒ??タ未登録エラー。キー={0}、å?={1} のãƒ??タは、存在してã�?�¾せんã€?
271 String vals = StringUtil.array2csv( values );
272 errMessage.addMessage( row,ErrorMessage.NG,"ERR0025",names,vals );
273 okFlag = false;
274 }
275 // 4.0.0.0 (2007/11/28) 論理処ç�??不å?合修正(カãƒ?‚³の付ける位置間違ã�?
276 else if( ( exist.equalsIgnoreCase( "false" ) ||
277 ( exist.equalsIgnoreCase( "auto" ) &&
278 DBTableModel.INSERT_TYPE.equals( modifyType ) ) ) && cnt > 0 ) {
279 // ERR0026=ãƒ??タ登録済みエラー。キー={0}、å?={1} のãƒ??タは、すでに存在してã�?�¾すã?
280 String vals = StringUtil.array2csv( values );
281 errMessage.addMessage( row,ErrorMessage.NG,"ERR0026",names,vals );
282 okFlag = false;
283 }
284 else if( exist.equalsIgnoreCase( "one" ) && cnt > 1 ) {
285 // ERR0027=ãƒ??タ?’重登録エラー。キー={0}、å?={1} のãƒ??タはã€?‡�è¤?�—て存在してã�?�¾すã?
286 String vals = StringUtil.array2csv( values );
287 errMessage.addMessage( row,ErrorMessage.NG,"ERR0027",names,vals );
288 okFlag = false;
289 }
290 if( errRemove && okFlag ) { list.add( row ); }
291 }
292 if( errRemove ) {
293 Integer[] in = list.toArray( new Integer[list.size()] );
294 int[] newRowNo = new int[in.length];
295 for( int i=0; i<in.length; i++ ) {
296 newRowNo[i] = in[i].intValue();
297 }
298 setParameterRows( newRowNo );
299 }
300 }
301
302 /**
303 * 【å»?¢ã€?通常は使ã�?�¾せん)結果をDBTableModelに書き込んで、sessionに登録するときã?キーを指定しますã?
304 *
305 * @og.tag
306 * (初期値:HybsSystem#TBL_MDL_KEY[={@og.value org.opengion.hayabusa.common.HybsSystem#TBL_MDL_KEY}])ã€?
307 *
308 * @param id sessionに登録する時ã? ID
309 * @deprecated クラスがå»?¢されましたã€?
310 */
311 @Deprecated public void setTableId( final String id ) {
312 tableId = nval( getRequestParameter( id ),tableId ); // 3.8.0.9 (2005/10/17)
313 }
314
315 /**
316 * 【å»?¢ã€?通常は使ã�?�¾せん)Queryオブジェクトを作æ?する時ã?DB接続IDを指定しますã?
317 *
318 * @og.tag Queryオブジェクトを作æ?する時ã?DB接続IDを指定しますã?
319 *
320 * @param id ãƒ??タベã?ス接続ID
321 * @deprecated クラスがå»?¢されましたã€?
322 */
323 @Deprecated public void setDbid( final String id ) {
324 dbid = nval( getRequestParameter( id ),dbid );
325 }
326
327 /**
328 * 【å»?¢】コマンãƒ?ENTRY)をセãƒ?ƒˆしますã?
329 *
330 * @og.tag
331 * コマンドã?,HTMLから(get/post)æŒ?®šされますã?で,CMD_xxx で設定される
332 * フィールド定数値のã�?�¥れかをã?æŒ?®šできますã?
333 *
334 * @param cmd コマンãƒ?public static final 宣è¨?�•れてã�?‚‹æ–?—å?)
335 * @see <a href="../../../../constant-values.html#org.opengion.hayabusa.taglib.TableExistTag.CMD_NEW">コマンド定数</a>
336 * @deprecated クラスがå»?¢されましたã€?
337 */
338 @Deprecated public void setCommand( final String cmd ) {
339 String cmd2 = getRequestParameter( cmd );
340 if( cmd2 != null && cmd2.length() > 0 ) { command = cmd2.toUpperCase(Locale.JAPAN); }
341 }
342
343 /**
344 * 【å»?¢】引数にセãƒ?ƒˆすべã�?ãƒ??タの名称(カラãƒ?��)をCSV形式でè¤?•°æŒ?®šしますã?
345 *
346 * @og.tag
347 * è¤?•°ある場合ã?、カンマ区åˆ?‚Šæ–?—で渡しますã?
348 * 引数をnames ではなくã?[カラãƒ?��]形式で直接æŒ?®šするほã�?�Œ、SQLæ–?�Œ判りやすくなりますã?
349 *
350 * @param nm 引数の名称(è¤?•°ある場合ã?、カンマ区åˆ?‚Šæ–??
351 * @deprecated クラスがå»?¢されましたã€?
352 */
353 @Deprecated public void setNames( final String nm ) {
354 names = nval( getRequestParameter( nm ),names );
355 }
356
357 /**
358 * 【å»?¢】チェãƒ?‚¯するãƒ??タベã?スå�?from 句)を指定しますã?
359 *
360 * @og.tag
361 * from 句 にæŒ?®šするデータベã?ス名ですã?
362 *
363 * @param fm ãƒ??タベã?スID
364 * @deprecated クラスがå»?¢されましたã€?
365 */
366 @Deprecated public void setFrom( final String fm ) {
367 from = nval( getRequestParameter( fm ),from );
368 }
369
370 /**
371 * 【å»?¢】チェãƒ?‚¯する検索条件(where句)を指定しますã?
372 *
373 * @og.tag
374 * where 区 にæŒ?®šする検索条件ですã?? の部åˆ?�«、names 属æ?でæŒ?®šしã�?
375 * カラãƒ??ãƒ??タがã?DBTableModelより取り出されて適用されますã?
376 * またã?、[カラãƒ?��]形式で、直接æŒ?®šすることもできますã?そã?場合ã?ã€?
377 * name 属æ?はæŒ?®šするå¿?¦�がありませんã€?
378 * [カラãƒ?��]の前後にã€?')シングルコーãƒ??ションは、不要ですã?
379 *
380 * @param wr 検索条件(where句)
381 * @deprecated クラスがå»?¢されましたã€?
382 */
383 @Deprecated public void setWhere( final String wr ) {
384 where = nval( getRequestParameter( wr ),where );
385 }
386
387 /**
388 * 【å»?¢】データベã?スのチェãƒ?‚¯方æ³?auto/true/false/one/notuse)を指定しまã�?初期値:?¢auto:自動」)ã€?
389 *
390 * @og.tag
391 * exist 属æ?にæŒ?®šされた ã€?½¢true:存在する?£ã€?½¢false:存在しなã�?½£ã€?½¢one:ひとつ以下」ã€?
392 * の値は、いずれの場合も、æ?立時は、正常とみなしますã?
393 * ?¢auto:自動」は、DBTableModeleのmodifyType(A,C,D)に応じて、チェãƒ?‚¯しますã?
394 * A,C,D は、entryタグにコマンドを渡してãƒ??タを作æ?したときに、å?部で作æ?されますã?
395 * notuse は、チェãƒ?‚¯を行いません。これã?、このタグをå?有使用する場合に、外部で
396 * チェãƒ?‚¯を行うかどã�?�‹を指定できるようにするために使用しますã?
397 * (?¢true:存在する?£ には、データが存在した場合にã€?¼¯?«で、なければエラーですã?)
398 * 初期値はã€?½¢auto:自動」ですã?
399 *
400 * @param ext チェãƒ?‚¯方æ³??¢auto:自動」ã€?½¢true:存在する?£ã€?½¢false:存在しなã�?½£ã€?½¢one:ひとつ以下」ã€?½¢notuse:チェãƒ?‚¯しなã�?½£)
401 * @deprecated クラスがå»?¢されましたã€?
402 */
403 @Deprecated public void setExist( final String ext ) {
404 exist = nval( getRequestParameter( ext ),exist );
405 if( !"auto".equalsIgnoreCase( exist ) &&
406 !"true".equalsIgnoreCase( exist ) &&
407 !"false".equalsIgnoreCase( exist ) &&
408 !"one".equalsIgnoreCase( exist ) &&
409 !"notuse".equalsIgnoreCase( exist ) ) {
410 String errMsg = "exist 属æ?はã€?auto,true,false,one,notuse)を指定してくださいã€?[" + exist + "]" + HybsSystem.CR ;
411 throw new HybsSystemException( errMsg );
412 }
413 }
414
415 /**
416 * 【å»?¢】エラー時ã?選択行を取り除ã�?�¦継続å?ç�?‚’行うかどã�?�‹[true/false]を指定しまã�?初期値:false)ã€?
417 *
418 * @og.tag
419 * exist 属æ?にæŒ?®šされた ã€?½¢true:存在する?£ã€?½¢false:存在しなã�?½£ã€?½¢one:ひとつ以下」ã€?
420 * に対して、エラーが発生した選択行番号をã?取り除ã�?�¦以下ã?処ç�?‚’継続するかどã�?�‹ã‚?
421 * æŒ?®šしますã?
422 * true に設定したå?合ã?、エラーãƒ??タを削除しã?継続å?ç�?‚’行うことができますã?
423 * flase の場合ã?、エラーãƒ??タを表示して、継続å?ç�?‚’停止しますã?
424 * 初期値はã€?½¢false:エラー時停止?£ですã?
425 *
426 * @param flag エラー時ã?継続å?ç�?[true:エラー行番号を取り除き継続å?ç�?false:エラー時停止]
427 * @deprecated クラスがå»?¢されましたã€?
428 */
429 @Deprecated public void setErrRemove( final String flag ) {
430 errRemove = nval( getRequestParameter( flag ),errRemove );
431 }
432
433 /**
434 * カラãƒ?��配å?(String[])より、対応するカラãƒ?o配å?(int[])を作æ?しますã?
435 *
436 * @param nameArray カラãƒ?��配å?
437 *
438 * @return カラãƒ?o配å?
439 */
440 private int[] getTableColumnNo( final String[] nameArray ) {
441 int[] clmNo = new int[ nameArray.length ];
442 for( int i=0; i<clmNo.length; i++ ) {
443 clmNo[i] = table.getColumnNo( nameArray[i] );
444 }
445 return clmNo;
446 }
447
448 /**
449 * æŒ?®šã?行番号の、カラãƒ?o配å?(int[])に対応したå?の配å?を返しますã?
450 *
451 * 表示ãƒ??タの HybsSystem.ROW_SEL_KEY をå?にã€?�¸ばれた 行を
452 * 処ç�??対象としますã?
453 *
454 * @param clmNo カラãƒ?o配å?
455 * @param row 行番号
456 *
457 * @return 行番号とカラãƒ?o配å?に対応したã?値の配å?
458 */
459 private String[] getTableModelData( final int[] clmNo,final int row ) {
460 String[] values = new String[ clmNo.length ];
461 for( int i=0; i<values.length; i++ ) {
462 values[i] = table.getValue( row,clmNo[i] ) ;
463 }
464 return values;
465 }
466
467 /**
468 * シリアライズ用のカスタãƒ?‚·リアライズ書き込みメソãƒ?ƒ‰
469 *
470 * @og.rev 4.0.0.0 (2006/09/31) 新規追åŠ?
471 * @serialData ä¸?ƒ¨のオブジェクトã?、シリアライズされませんã€?
472 *
473 * @param strm ObjectOutputStreamオブジェクãƒ?
474 * @throws IOException 入出力エラーが発生したå?å�?
475 */
476 private void writeObject( final ObjectOutputStream strm ) throws IOException {
477 strm.defaultWriteObject();
478 }
479
480 /**
481 * シリアライズ用のカスタãƒ?‚·リアライズ読み込みメソãƒ?ƒ‰
482 *
483 * ここでは、transient 宣è¨?�•れたå†?ƒ¨変数のå†??初期化がå¿?¦�なフィールドã?み設定しますã?
484 *
485 * @og.rev 4.0.0.0 (2006/09/31) 新規追åŠ?
486 * @serialData ä¸?ƒ¨のオブジェクトã?、シリアライズされませんã€?
487 *
488 * @param strm ObjectInputStreamオブジェクãƒ?
489 * @see #release2()
490 * @throws IOException シリアライズに関する入出力エラーが発生したå?å�?
491 * @throws ClassNotFoundException クラスを見つけることができなかったå?å�?
492 */
493 private void readObject( final ObjectInputStream strm ) throws IOException , ClassNotFoundException {
494 strm.defaultReadObject();
495 }
496
497 /**
498 * こã?オブジェクトã?æ–?—å?表現を返しますã?
499 * 基本çš?�«ãƒ?ƒ�ãƒ?‚°目çš?�«使用しますã?
500 *
501 * @return こã?クラスのæ–?—å?表現
502 */
503 @Override
504 public String toString() {
505 return org.opengion.fukurou.util.ToString.title( this.getClass().getName() )
506 .println( "VERSION" ,VERSION )
507 .println( "tableId" ,tableId )
508 .println( "dbid" ,dbid )
509 .println( "command" ,command )
510 .println( "sql" ,sql )
511 .println( "names" ,names )
512 .println( "from" ,from )
513 .println( "where" ,where )
514 .println( "exist" ,exist )
515 .println( "CMD_ENTRY" ,CMD_ENTRY )
516 .println( "Other..." ,getAttributes().getAttribute() )
517 .fixForm().toString() ;
518 }
519 }