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.TableFilter;
022 import org.opengion.fukurou.db.Transaction;
023 import org.opengion.fukurou.db.TransactionReal;
024 import org.opengion.fukurou.util.ErrorMessage;
025 import org.opengion.fukurou.util.StringUtil;
026 import static org.opengion.fukurou.util.StringUtil.nval ;
027
028 import java.io.ObjectOutputStream;
029 import java.io.ObjectInputStream;
030 import java.io.IOException;
031 import java.util.Map;
032
033 /**
034 * TableFilter のサブクラスをCALLしてDBTableModelにアクセスするタグですã?
035 *
036 * DBTableModel ã‚?TableFilter のサブクラス(classIdでæŒ?®?に渡して処ç�?‚’実行しますã?
037 * クラスを作æ?する場合ã?、org.opengion.hayabusa.db.TableFilter インターフェースを継承した
038 * クラスにするå¿?¦�がありますã?またã?classId 属æ?には、シスãƒ?ƒ リソース で
039 * 設定しã�?TableFilter.XXXX の XXXX を指定しますã?
040 *
041 * BODY部åˆ??、SQLを記述する為ã�?�‘に使ってã�?�¾したがã?CSS定義形式ã?書式で、keys,vals を記述
042 * できるようにしますã?
043 * これは、下記ã?ようなパラメータをã?keys="KEY,KEY2,KEY3" vals='AAAA,"BB,CC,DD",EE' のような記述形式と
044 * {
045 * KEY1 : AAAA ;
046 * KEY2 : BB,CC,DD ;
047 * KEY3 : EE ;
048 * ・・・・・・
049 * }
050 * のような、CSS形式に類似の形式でも記述できるようにしましたã€?
051 * keys,vals と CSS定義形式パラメータを同時にæŒ?®šしたå?合ã?、両方とも有効ですã?
052 * ただしã?キーが重è¤?�—たå?合ã?、不定とè€?�ˆてくださいã€?
053 * 現時点では、CSS定義形式パラメータが優先されますが、これã?、単にå†?ƒ¨パラメータMapへの
054 * 登録é ?�Œ、CSS定義形式パラメータが後ã?為、上書きされるためですã?
055 *
056 * ※ こã?タグは、Transaction タグの対象ですã?
057 *
058 * @og.formSample
059 * ●形式ï¼?lt;og:tableFilter classId="…" />
060 * ●body?šあã‚?EVAL_BODY_BUFFERED:BODYを評価しã?{@XXXX} を解析しまã�?
061 *
062 * ●Tag定義??
063 * <og:tableFilter
064 * classId ○ã?TAG】データベã?ス処ç�?‚’実行するクラスパスを指定しまã�?å¿??)ã€?
065 * tableId 【TAGã€?通常は使ã�?�¾せん)DBTableModel sessionに登録されてã�?‚‹キーを指定しまã�?
066 * modifyType 【TAG】データ処ç�??方æ³?A:追åŠ?C:更新 D:削除)を指定しまã�?
067 * keys 【TAG】リンク先に渡すキーを指定しまã�?
068 * vals 【TAG】keys属æ?に対応するå?をCSV形式でè¤?•°æŒ?®šしまã�?
069 * selectedAll 【TAG】データをå?件選択済みとして処ç�?�™るかどã�?�‹[true/false]を指定しまã�?初期値:false)
070 * stopZero 【TAG】検索結果が0件のときå?ç�?‚’続行するかどã�?�‹[true/false]を指定しまã�?初期値:false[続行する])
071 * scope 【TAG】キャãƒ?‚·ュする場合ã?スコープ[request/page/session/applicaton]を指定しまã�?初期値:session)
072 * dbid 【TAGã€?通常は使ã�?�¾せん)Queryオブジェクトを作æ?する時ã?DB接続IDを指定しまã�?
073 * caseKey 【TAG】このタグ自体を利用するかどã�?�‹の条件キーを指定しまã�?初期値:null) 5.7.7.2 (2014/06/20)
074 * caseVal 【TAG】このタグ自体を利用するかどã�?�‹の条件値を指定しまã�?初期値:null) 5.7.7.2 (2014/06/20)
075 * caseNN 【TAG】指定ã?値がã?null/ゼロæ–?—å? でなã�??å�?Not Null=NN)は、このタグは使用されまã�?初期値:true) 5.7.7.2 (2014/06/20)
076 * caseNull 【TAG】指定ã?値がã?null/ゼロæ–?—å? の場合ã?、このタグは使用されまã�?初期値:true) 5.7.7.2 (2014/06/20)
077 * debug 【TAG】デバッグæƒ??をå?力するかどã�?�‹[true/false]を指定しまã�?初期値:false)
078 * > ... Body ...
079 * </og:tableFilter>
080 *
081 * ●使用ä¾?
082 * ・引数/プロシジャーを直接書くå?å�?
083 * 【entry.jspã€?
084 * <og:tableFilter
085 * classId = "WL_LOGICSET" :TableFilter のサブクラス(実行クラス)
086 * tableId = "WL0000" :登録å…??DBTableModelのsession/request変数å†??取得キー
087 * keys = "AA,BB,CC" :実行クラスへの引数のキー
088 * vals = "{@AA},{@BB},{@CC}" :実行クラスへの引数の値
089 * selectedAll = "false/true" :処ç�?¯¾象の行を全行選択するかどã�?�‹(初期値:false)
090 * modifyType = "A/C/D" :処ç�??方æ³?A:追åŠ?C:更新 D:削除)を指定しますã?初期値は自動ですã?
091 * />
092 *
093 * ・BODY部åˆ?�«、CSS形式ã?パラメータ??eys,vals?‰を記述するä¾?
094 *
095 * <og:tableFilter
096 * classId = "WL_LOGICSET" :TableFilter のサブクラス(実行クラス)
097 * tableId = "WL0000" :登録å…??DBTableModelのsession/request変数å†??取得キー
098 * selectedAll = "false/true" :処ç�?¯¾象の行を全行選択するかどã�?�‹(初期値:false)
099 * modifyType = "A/C/D" :処ç�??方æ³?A:追åŠ?C:更新 D:削除)を指定しますã?初期値は自動ですã?
100 * >
101 * {
102 * AA : {@AA}
103 * BB : {@BB}
104 * CC : {@CC}
105 * }
106 * </og:tableFilter>
107 *
108 * @og.group そã?ä»?
109 * @og.rev 3.8.5.0 (2006/03/20) 新規作æ?
110 *
111 * @version 0.9.0 2000/10/17
112 * @author Kazuhiko Hasegawa
113 * @since JDK1.1,
114 */
115 public class TableFilterTag extends CommonTagSupport {
116 //* こã?プログラãƒ??VERSIONæ–?—å?を設定しますã? {@value} */
117 private static final String VERSION = "5.7.7.2 (2014/06/20)" ;
118
119 private static final long serialVersionUID = 577220140620L ;
120
121 private static final String errMsgId = HybsSystem.ERR_MSG_KEY;
122 private transient DBTableModel table = null;
123
124 private String tableId = HybsSystem.TBL_MDL_KEY;
125 private String classId = null;
126 private String modifyType = null;
127 private String[] keys = null;
128 private String[] vals = null;
129
130 private String dbid = null ; // 4.2.4.0 (2008/06/23)
131 private String sql = null ; // 5.6.5.2 (2013/06/21) bodyからSQLæ–??みをå?りå?すã?
132 private Map<String,String> paramMap = null; // 5.6.5.2 (2013/06/21) bodyからparamMapを取りだしã?
133
134 private boolean selectedAll = false;
135 private boolean stopZero = false; // 5.7.6.2 (2014/05/16) stopZero属æ?追åŠ?
136
137 /**
138 * Taglibの開始タグが見つかったときに処ç�?�™ã‚?doStartTag() ã‚?オーバã?ライドしますã?
139 *
140 * @og.rev 5.7.7.2 (2014/06/20) caseKey,caseVal,caseNN,caseNull 属æ?を追åŠ?
141 *
142 * @return 後続å?ç�??æŒ?¤º( EVAL_BODY_BUFFERED )
143 */
144 @Override
145 public int doStartTag() {
146 // 5.7.7.2 (2014/06/20) caseKey,caseVal,caseNN,caseNull 属æ?を追åŠ?
147 if( !useTag() ) { return SKIP_BODY ; }
148
149 table = (DBTableModel)getObject( tableId );
150
151 if( keys != null && vals != null && keys.length != vals.length ) {
152 String errMsg = "keys と vals の設定å?の数が異なりますã?: " + HybsSystem.CR
153 + "keys.length=[" + keys.length + "] , "
154 + "keys.length=[" + StringUtil.array2line( keys,"," ) + "]"
155 + HybsSystem.CR
156 + "vals.length=[" + vals.length + "] , "
157 + "vals.length=[" + StringUtil.array2line( vals,"," ) + "]";
158 throw new HybsSystemException( errMsg );
159 }
160
161 startQueryTransaction( tableId );
162 return EVAL_BODY_BUFFERED ; // Body を評価する
163 }
164
165 /**
166 * Taglibのタグ本体を処ç�?�™ã‚?doAfterBody() ã‚?オーバã?ライドしますã?
167 *
168 * @og.rev 5.6.5.2 (2013/06/21) bodyローカル化ã?sql、paramMap 追åŠ?
169 *
170 * @return 後続å?ç�??æŒ?¤º(SKIP_BODY)
171 */
172 @Override
173 public int doAfterBody() {
174 String body = nval( getBodyString(),null );
175
176 // paramMapの取り出ã�?
177 paramMap = StringUtil.cssParse( body );
178
179 // SQLæ–??åˆ?‚Š出ã�?classId="DBSELECT" の場合ã?みの処ç�?
180 if( "DBSELECT".equalsIgnoreCase( classId ) && body != null ) {
181 int ad1 = body.indexOf( '{' );
182 int ad2 = body.indexOf( '}' );
183
184 if( ad1 >= 0 && ad2 >= 0 ) {
185 sql = body.substring( 0,ad1 ).trim() + body.substring( ad2+1 ).trim();
186 }
187 else {
188 sql = body.trim();
189 }
190 }
191
192 return SKIP_BODY ;
193 }
194
195 /**
196 * Taglibの終äº?‚¿グが見つかったときに処ç�?�™ã‚?doEndTag() ã‚?オーバã?ライドしますã?
197 *
198 * @og.rev 3.8.7.0 (2006/12/15) アクセスログ取得ã?為,ApplicationInfoオブジェクトを設å®?
199 * @og.rev 4.2.3.0 (2008/06/23) DBIDとボディー部åˆ??記述を下位クラスに渡す用に修正
200 * @og.rev 4.3.7.4 (2009/07/01) Resouceオブジェクトを下位クラスに渡す用に修正
201 * @og.rev 5.1.9.0 (2010/08/01) Transaction 対å¿?
202 * @og.rev 5.2.1.0 (2010/10/01) debugPrint() メソãƒ?ƒ‰の処ç�?�¡件見直ã�?
203 * @og.rev 5.3.7.0 (2011/07/01) TransactionReal の引数変更 、Transaction対応で、close処ç�?‚’入れるã€?
204 * @og.rev 5.6.5.2 (2013/06/21) bodyローカル化ã?sql、paramMap 追åŠ?
205 * @og.rev 5.7.6.2 (2014/05/16) table件数が変わるå?合ã?"DB.COUNT" キーでリクエストに再セãƒ?ƒˆするã€?
206 * @og.rev 5.7.7.2 (2014/06/20) caseKey,caseVal,caseNN,caseNull 属æ?を追åŠ?
207 *
208 * @return 後続å?ç�??æŒ?¤º
209 */
210 @Override
211 public int doEndTag() {
212 // ãƒ?ƒ�ãƒ?‚°時には、オブジェクトå?部æƒ??を表示するã€?
213 debugPrint(); // 5.2.1.0 (2010/10/01) debugPrint() メソãƒ?ƒ‰自体に、isDebug() がçµ?�¿込まれてã�?‚‹ã€?
214
215 // 5.7.7.2 (2014/06/20) caseKey,caseVal,caseNN,caseNull 属æ?を追åŠ?
216 if( !useTag() ) { return EVAL_PAGE ; }
217
218 int rtnCode = EVAL_PAGE; // try ??finally の関係で、変数化しておく
219
220 int[] rowNo = getParameterRows();
221
222 // 5.1.9.0 (2010/08/01) Transaction 対å¿?
223 Transaction tran = null;
224 final TableFilter filter ;
225 // 5.3.7.0 (2011/07/01) Transaction対応で、close処ç�?‚’入れるã€?
226 try {
227 TransactionTag tranTag = (TransactionTag)findAncestorWithClass( this,TransactionTag.class );
228 if( tranTag == null ) {
229 tran = new TransactionReal( getApplicationInfo() ); // 5.3.7.0 (2011/07/01) 引数変更
230 }
231 else {
232 tran = tranTag.getTransaction();
233 }
234
235 // 5.7.6.2 (2014/05/16) table件数が変わるå?合ã?"DB.COUNT" キーでリクエストに再セãƒ?ƒˆするã€?
236 int rowCnt1 = table == null ? -1 : table.getRowCount();
237
238 String cls = HybsSystem.sys( "TableFilter_" + classId );
239 filter = (TableFilter)HybsSystem.newInstance( cls );
240
241 filter.setDBTableModel( table );
242 filter.setParameterRows( rowNo );
243 filter.setModifyType( modifyType );
244 filter.setKeysVals( keys,vals );
245 // filter.setApplicationInfo( getApplicationInfo() ); // 3.8.7.0 (2006/12/15)
246 filter.setTransaction( tran ); // 5.1.9.0 (2010/08/01) Transaction 対å¿?
247 filter.setDebug( isDebug() );
248 filter.setDbid( dbid ); // 4.2.4.0 (2008/06/23)
249 filter.setSql( sql ); // 5.6.5.2 (2013/06/21) sql 追åŠ?
250 filter.setParamMap( paramMap ); // 5.6.5.2 (2013/06/21) paramMap 追åŠ?
251 filter.setResource( getResource() ); // 4.3.7.4 (2009/07/01)
252
253 table = filter.execute();
254
255 // 5.7.6.2 (2014/05/16) table件数が変わるå?合ã?"DB.COUNT" キーでリクエストに再セãƒ?ƒˆするã€?
256 int rowCnt2 = table == null ? -1 : table.getRowCount();
257 if( rowCnt1 != rowCnt2 ) {
258 setRequestAttribute( "DB.COUNT" , String.valueOf( rowCnt2 ) );
259 }
260
261 int errCode = filter.getErrorCode();
262 ErrorMessage errMessage = filter.getErrorMessage();
263
264 if( errCode >= ErrorMessage.NG ) { // 異常
265 rtnCode = SKIP_PAGE;
266 }
267
268 // 5.7.6.2 (2014/05/16) 件数?�件(またã?、table==null)かつ stopZero = true
269 if( rowCnt2 <= 0 && stopZero ) { return SKIP_PAGE; }
270
271 String err = TaglibUtil.makeHTMLErrorTable( errMessage,getResource() );
272 if( err != null && err.length() > 0 ) {
273 jspPrint( err );
274 setSessionAttribute( errMsgId,errMessage );
275 }
276 else {
277 removeSessionAttribute( errMsgId );
278 }
279 }
280 finally {
281 if( tran != null ) { tran.close(); }
282 }
283
284 if( table != null && ! commitTableObject( tableId, table ) ) {
285 rtnCode = SKIP_PAGE ;
286 }
287
288 return rtnCode ;
289 }
290
291 /**
292 * タグリブオブジェクトをリリースしますã?
293 * キャãƒ?‚·ュされて再利用されるã?で、フィールドã?初期設定を行いますã?
294 *
295 * @og.rev 5.6.5.2 (2013/06/21) bodyå»?¢、sql、paramMap 追åŠ?
296 * @og.rev 5.7.6.2 (2014/05/16) stopZero属æ?追åŠ?
297 */
298 @Override
299 protected void release2() {
300 super.release2();
301 table = null;
302 tableId = HybsSystem.TBL_MDL_KEY;
303 classId = null;
304 modifyType = null;
305 keys = null;
306 vals = null;
307 selectedAll = false;
308 stopZero = false; // 5.7.6.2 (2014/05/16) stopZero属æ?追åŠ?
309 dbid = null; // 4.2.4.0 (2008/06/23)
310 sql = null; // 5.6.5.2 (2013/06/21) bodyからSQLæ–??みをå?りå?すã?
311 paramMap = null; // 5.6.5.2 (2013/06/21) bodyからparamMapを取りだすã?
312 }
313
314 /**
315 * 表示ãƒ??タの HybsSystem.ROW_SEL_KEY をå?にã€?�¸ばれた 行を処ç�??対象としますã?
316 *
317 * @return 選択行ã?配å?
318 */
319 @Override
320 protected int[] getParameterRows() {
321 final int[] rowNo ;
322 if( selectedAll ) {
323 int rowCnt = table.getRowCount();
324 rowNo = new int[ rowCnt ];
325 for( int i=0; i<rowCnt; i++ ) {
326 rowNo[i] = i;
327 }
328 } else {
329 rowNo = super.getParameterRows(); // 4.0.0 (2005/01/31)
330 }
331 return rowNo;
332 }
333
334 /**
335 * 【TAG】データベã?ス処ç�?‚’実行するクラスパスを指定しますã?
336 *
337 * @og.tag
338 * ここでæŒ?®šするクラスIDは、シスãƒ?ƒ リソース にて TableFilter の
339 * サブクラス(インターフェース継承)としてæŒ?®šするå¿?¦�がありますã?
340 *
341 * クラス自身は、org.opengion.hayabusa.db.TableFilter インターフェースを継承してã�?‚‹å¿?¦�がありますã?
342 * {@og.doc03Link tableFilter TableFilter_**** クラス}
343 *
344 * @param id TableFilter インターフェースを継承してã�?‚‹実クラスの ID
345 * @see org.opengion.hayabusa.db.TableFilter TableFilter インターフェース
346 */
347 public void setClassId( final String id ) {
348 classId = nval( getRequestParameter( id ),classId );
349 }
350
351 /**
352 * 【TAGã€?通常は使ã�?�¾せん)結果のDBTableModelをã?sessionに登録するときã?キーを指定しまã�?
353 * (初期値:HybsSystem#TBL_MDL_KEY[={@og.value org.opengion.hayabusa.common.HybsSystem#TBL_MDL_KEY}])ã€?
354 *
355 * @og.tag
356 * 検索結果より、DBTableModelオブジェクトを作æ?しますã?これをã?下流ã?viewタグ等に
357 * 渡すå?合にã€??常は、session を利用しますã?そã?場合ã?登録キーですã?
358 * query タグを同時に実行して、結果を求めるå?合ã?同ä¸?ƒ¡モリに配置される為ã€?
359 * こã? tableId 属æ?を利用して、メモリ空間をåˆ?�‘ますã?
360 * (初期値:HybsSystem#TBL_MDL_KEY[={@og.value org.opengion.hayabusa.common.HybsSystem#TBL_MDL_KEY}])ã€?
361 *
362 * @param id sessionに登録する時ã? ID
363 */
364 public void setTableId( final String id ) {
365 tableId = nval( getRequestParameter( id ),tableId );
366 }
367
368 /**
369 * 【TAG】データをå?件選択済みとして処ç�?�™るかどã�?�‹[true/false]を指定しまã�?初期値:false)ã€?
370 *
371 * @og.tag
372 * 全てのãƒ??タを選択済みãƒ??タとして扱って処ç�?�—ますã?
373 * 全件処ç�?�™るå?合に、指定しますã?(true/false)
374 * ãƒ?ƒ•ォルãƒ?false ですã?
375 *
376 * @param all ãƒ??タをå?件選択済み [true:全件選択済み/false:通常]
377 */
378 public void setSelectedAll( final String all ) {
379 selectedAll = nval( getRequestParameter( all ),selectedAll );
380 }
381
382 /**
383 * 【TAG】検索結果が0件のときå?ç�?‚’続行するかどã�?�‹[true/false]を指定しまã�?初期値:false[続行する])ã€?
384 *
385 * @og.tag
386 * 初期値は、false(続行すã‚?ですã?
387 *
388 * @og.rev 5.7.6.2 (2014/05/16) 新規追åŠ?
389 *
390 * @param cmd 検索結果が0件のときã?[true:処ç�?‚’中止する/false:続行する]
391 */
392 public void setStopZero( final String cmd ) {
393 stopZero = nval( getRequestParameter( cmd ),stopZero );
394 }
395
396 /**
397 * 【TAG】データ処ç�??方æ³?A:追åŠ?C:更新 D:削除)を指定しますã?
398 *
399 * @og.tag
400 * 通常は、DBTableModel に自動設定されてã�?‚‹ modifyType をå?に、データ処ç�?–¹法を
401 * 選別しますã?(A:追åŠ?C:更新 D:削除)
402 * こã?場合ã?行単位で modifyType の値を取得して判別するå¿?¦�がありますが、ä¸?ˆ¬には
403 * 処ç�?¯¾象は、å?件おなã�?modifyType である可能性が高いですã?
404 * またã?selectedAll などで強制çš?�«全件処ç�?¯¾象とする場合ã?、modifyType に値ã�?
405 * 設定さてã�?�¾せん。その様な場合に外部より modifyType を指定しますã?
406 * 初期値は、è?動判å®?ですã?
407 *
408 * @param type ãƒ??タ処ç�??方æ³?A:追åŠ?C:更新 D:削除)
409 */
410 public void setModifyType( final String type ) {
411 modifyType = nval( getRequestParameter( type ),modifyType );
412
413 if( modifyType != null && !"A".equals( modifyType ) && !"C".equals( modifyType ) && !"D".equals( modifyType ) ) {
414 String errMsg = "modifyType は A:追åŠ?C:更新 D:削除 のどれかを指定してくださいã€? " + HybsSystem.CR
415 + "modifyType=[" + modifyType + "]";
416 throw new HybsSystemException( errMsg );
417 }
418 }
419
420 /**
421 * 【TAG】リンク先に渡すキーを指定しますã?
422 *
423 * @og.tag
424 * 戻る時に、検索時ã?キャãƒ?‚·ュにæŒ?®šした引数以外にæŒ?®šしたり、別の値に置き換えたã‚?
425 * する場合ã?キーを設定できますã?カンマ区åˆ?‚Šでè¤?•°æŒ?®šできますã?
426 * vals 属æ?には、キーに対応するå?をã?設定してくださいã€?
427 * åˆ?§£方法ã?、CSV変数をå?にåˆ?§£してから、getRequestParameter で値を取得しますã?
428 * こうしなã�?�¨ãƒ??タ自身にカンマを持ってã�?‚‹場合にåˆ?§£をミスる為ですã?
429 *
430 * @param key リンク先に渡すキー
431 */
432 public void setKeys( final String key ) {
433 keys = getCSVParameter( key );
434 }
435
436 /**
437 * 【TAG】names属æ?に対応するå?をCSV形式でè¤?•°æŒ?®šしますã?
438 *
439 * @og.tag
440 * キーに設定したå?をã?カンマ区åˆ?‚Šæ–?—でè¤?•°して出来ますã?
441 * æŒ?®šé?序ã?、キーと同じにしておいて下さã�??
442 * åˆ?§£方法ã?、CSV変数をå?にåˆ?§£してから、getRequestParameter で値を取得しますã?
443 * こうしなã�?�¨ãƒ??タ自身にカンマを持ってã�?‚‹場合にåˆ?§£をミスる為ですã?
444 *
445 * @param val names属æ?に対応するå?
446 */
447 public void setVals( final String val ) {
448 vals = getCSVParameter( val );
449 }
450
451 /**
452 * 【TAGã€?通常は使ã�?�¾せん)Queryオブジェクトを作æ?する時ã?DB接続IDを指定しますã?
453 *
454 * @og.tag
455 * Queryオブジェクトを作æ?する時ã?DB接続IDを指定しますã?
456 * これは、シスãƒ?ƒ リソースで、DEFAULT_DB_URL 等でæŒ?®šしてã�?‚‹ ãƒ??タベã?ス接続å?
457 * æƒ??に、XX_DB_URL を定義することでã€?dbid="XX" とすると、この 接続å?を使用して
458 * ãƒ??タベã?スにアクセスできますã?
459 *
460 * @param id ãƒ??タベã?ス接続ID
461 */
462 public void setDbid( final String id ) {
463 dbid = nval( getRequestParameter( id ),dbid );
464 }
465
466 /**
467 * シリアライズ用のカスタãƒ?‚·リアライズ書き込みメソãƒ?ƒ‰
468 *
469 * @og.rev 4.0.0.0 (2006/09/31) 新規追åŠ?
470 * @serialData ä¸?ƒ¨のオブジェクトã?、シリアライズされませんã€?
471 *
472 * @param strm ObjectOutputStreamオブジェクãƒ?
473 * @throws IOException 入出力エラーが発生したå?å�?
474 */
475 private void writeObject( final ObjectOutputStream strm ) throws IOException {
476 strm.defaultWriteObject();
477 }
478
479 /**
480 * シリアライズ用のカスタãƒ?‚·リアライズ読み込みメソãƒ?ƒ‰
481 *
482 * ここでは、transient 宣è¨?�•れたå†?ƒ¨変数のå†??初期化がå¿?¦�なフィールドã?み設定しますã?
483 *
484 * @og.rev 4.0.0.0 (2006/09/31) 新規追åŠ?
485 * @serialData ä¸?ƒ¨のオブジェクトã?、シリアライズされませんã€?
486 *
487 * @param strm ObjectInputStreamオブジェクãƒ?
488 * @see #release2()
489 * @throws IOException シリアライズに関する入出力エラーが発生したå?å�?
490 * @throws ClassNotFoundException クラスを見つけることができなかったå?å�?
491 */
492 private void readObject( final ObjectInputStream strm ) throws IOException , ClassNotFoundException {
493 strm.defaultReadObject();
494 }
495
496 /**
497 * こã?オブジェクトã?æ–?—å?表現を返しますã?
498 * 基本çš?�«ãƒ?ƒ�ãƒ?‚°目çš?�«使用しますã?
499 *
500 * @return こã?クラスのæ–?—å?表現
501 */
502 @Override
503 public String toString() {
504 return org.opengion.fukurou.util.ToString.title( this.getClass().getName() )
505 .println( "VERSION" ,VERSION )
506 .println( "tableId" ,tableId )
507 .println( "classId" ,classId )
508 .println( "modifyType" ,modifyType )
509 .println( "selectedAll" ,selectedAll )
510 .println( "keys" ,keys )
511 .println( "vals" ,vals )
512 .println( "dbid" ,dbid ) // 4.2.4.0 (2008/06/23)
513 .println( "sql" ,sql ) // 5.6.5.2 (2013/06/21)
514 .fixForm().toString() ;
515 }
516 }