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.db;
017
018 import org.opengion.fukurou.model.DataModel;
019
020 /**
021 * javax.swing.table.TableModel インターフェースを継承したãƒ??タベã?スæƒ??をTableModelæƒ??にマッピングするのに利用しますã?
022 *
023 * @og.group ãƒ??ブル管ç�?
024 *
025 * @version 4.0
026 * @author Kazuhiko Hasegawa
027 * @since JDK5.0,
028 */
029 public interface DBTableModel extends DataModel<String> {
030
031 /**
032 * 行指定ã?書込み許可を与えますã?
033 * 具体的には,チェãƒ?‚¯ボックスの表示/非表示を指定しますã?
034 * これã�?true の場合ã?,書込み許可ですã?(チェãƒ?‚¯ボックスを表示)
035 * false の場合ã?,書込み不許可(チェãƒ?‚¯ボックスは表示されませんã€?
036 * 行毎に書込み許可/不許可を指定するå?合ã?,?‘カラãƒ?›®に writable
037 * カラãƒ?‚’用意して true/false を指定しますã?
038 * こã? writable カラãƒ?�¨の論理積によりæœ?µ‚的にチェãƒ?‚¯ボックスの
039 * 表示の ON/OFF が決まりますã?
040 *
041 * こã?ãƒ?ƒ•ォルトå?は、true に設定されてã�?�¾すã?
042 *
043 */
044 static final boolean DEFAULT_WRITABLE = true;
045
046 /**
047 * 行指定用のチェãƒ?‚¯ボックスに対して初期値ã‚?選択済みにするかã?
048 * 非選択済みにするかã?ãƒ?ƒ•ォルトå?を指定しますã?
049 *
050 * こã?ãƒ?ƒ•ォルトå?は、false に設定されてã�?�¾すã?
051 *
052 */
053 static final boolean DEFAULT_CHECKED = false;
054
055 /**
056 * 変更されたタイãƒ?追åŠ?
057 */
058 static final String INSERT_TYPE = "A";
059
060 /**
061 * 変更されたタイãƒ?変更)
062 */
063 static final String UPDATE_TYPE = "C";
064
065 /**
066 * 変更されたタイãƒ?削除)
067 */
068 static final String DELETE_TYPE = "D";
069
070 /**
071 * こã?オブジェクトを初期化しますã?
072 * æŒ?®šã?引数åˆ??å†?ƒ¨配å?を作æ?しますã?
073 * 具体的には,DBColumn の数を指定することになりますã?
074 *
075 * @param columnCount カラãƒ?•°
076 */
077 void init( int columnCount ) ;
078
079 /**
080 * こã?オブジェクトをヘッãƒ??部åˆ?‚’コピã?しã?ãƒ??タをå?期化しますã?
081 * これは、カラãƒ?�ªどヘッãƒ??系のæƒ??は、å?と同じオブジェクトを共有しã€?
082 * ãƒ??タ部のみ空にした DBTableModel を作æ?することを意味しますã?
083 * こã?際ã?consistencyKey もè¤??しますã?で、整合æ?は崩れなã�?‚ˆã�?�«ã€?
084 * ãƒ??タ登録を行うå¿?¦�がありますã?
085 *
086 * @og.rev 4.0.0.0 (2007/06/28) 新規作æ?
087 *
088 * @return DBTableModelオブジェクãƒ?
089 */
090 DBTableModel newModel();
091
092 /**
093 * カラãƒ??ラベル名を返しますã?
094 * カラãƒ??é ?›®名に対して,見える形のæ–?—å?を返しますã?
095 * ä¸?ˆ¬には,リソースバンドルとçµ?�ˆせて,å�?›½ロケール毎にラベルã‚?
096 * åˆ?›¿えますã?
097 * セãƒ?ƒˆされã�?DBColumn#getLabel( int ) の値が返されますã?
098 *
099 * @param column カラãƒ?•ª号
100 *
101 * @return カラãƒ??ラベルå�?
102 */
103 String getColumnLabel( int column ) ;
104
105 /**
106 * row および column にあるセルの属æ?値をStringに変換して返しますã?
107 *
108 * @param row 値が参照されるè¡?
109 * @param column 値が参照されるå?
110 *
111 * @return æŒ?®šされたセルの値 String
112 *
113 */
114 // String getValue(int row, int column) ;
115
116 /**
117 * row および columnName にあるセルの属æ?値をStringに変換して返しますã?
118 *
119 * @param aRow 値が参照されるè¡?
120 * @param columnName 値が参照されるカラãƒ?��
121 *
122 * @return æŒ?®šされたセルの値 String
123 * @see #getValue( int , int )
124 */
125 String getValue( final int aRow, final String columnName );
126
127 /**
128 * row にあるセルの属æ?値をé?列で返しますã?
129 *
130 * @param row 値が参照されるè¡?
131 *
132 * @return æŒ?®šされたセルの属æ?値 String[]
133 *
134 */
135 // String[] getValues( int row ) ;
136
137 /**
138 * カラãƒ?��配å?を返しますã?
139 *
140 * @og.rev 3.0.0.0 (2002/12/25) カラãƒ?��配å?を取得するメソãƒ?ƒ‰を追åŠ?�™るã?
141 *
142 * @return nm String[]
143 */
144 // String[] getNames() ;
145
146 /**
147 * カラãƒ?åˆ?にカラãƒ?‚ªブジェクトを割り当てますã?
148 * カラãƒ?‚ªブジェクトã??Œラベルã‚?ƒ�ーãƒ?�ªど?Œそのカラãƒ?ƒ…報ã‚?
149 * 保持したオブジェクトですã?
150 *
151 * @param dbColumn カラãƒ?‚ªブジェクãƒ?
152 * @param clm ヘッãƒ??を適応するカラãƒ?åˆ?
153 */
154 void setDBColumn( int dbColumn, DBColumn clm ) ;
155
156 /**
157 * カラãƒ?åˆ?のカラãƒ?‚ªブジェクトを返しますã?
158 * カラãƒ?‚ªブジェクトã??Œラベルã‚?ƒ�ーãƒ?�ªど?Œそのカラãƒ?ƒ…報ã‚?
159 * 保持したオブジェクトですã?
160 *
161 * @param clm ヘッãƒ??を適応するカラãƒ?åˆ?
162 *
163 * @return DBColumnカラãƒ?‚ªブジェクãƒ?
164 */
165 DBColumn getDBColumn( int clm ) ;
166
167 /**
168 * カラãƒ?‚ªブジェクトé?列を返しますã?
169 * カラãƒ?‚ªブジェクトã??Œラベルã‚?ƒ�ーãƒ?�ªど?Œそのカラãƒ?ƒ…報ã‚?
170 * 保持したオブジェクトですã?
171 *
172 * @og.rev 4.0.0.0 (2005/12/31) 新規追åŠ?
173 *
174 * @return カラãƒ?‚ªブジェクトé?åˆ?
175 */
176 DBColumn[] getDBColumns() ;
177
178 /**
179 * カラãƒ?��をもとに、そのカラãƒ?•ª号を返しますã?
180 * カラãƒ?��が存在しなã�??合ã??¤ HybsSystemException ã‚?throw しますã?
181 *
182 * @param columnName カラãƒ?��
183 *
184 * @return カラãƒ?•ª号
185 */
186 // int getColumnNo( String columnName ) ;
187
188 /**
189 * カラãƒ?��をもとに、そのカラãƒ?•ª号を返しますã?
190 * useThrow がã?true の場合ã?、カラãƒ?��が存在しなã�??合ã??¤ HybsSystemException ã‚?
191 * throw しますã?useThrow がã?false の場合ã?、カラãƒ?��が存在しなã�??合ã??¤ -1 を返しますã?
192 *
193 * @og.rev 4.0.0.0 (2005/12/31) 新規追åŠ?
194 *
195 * @param columnName カラãƒ?��
196 * @param useThrow カラãƒ?��が存在しなã�??合に、Exception ã‚?throw するかどã�?�‹
197 *
198 * @return カラãƒ?•ª号
199 */
200 int getColumnNo( final String columnName,final boolean useThrow ) ;
201
202 /**
203 * 変更済みフラグをå?に戻しますã?
204 *
205 * ä¸?ˆ¬には,ãƒ??タベã?スにãƒ??ブルモãƒ?ƒ«を登録するタイミングでã€?
206 * 変更済みフラグをå?に戻しますã?
207 *
208 */
209 void resetModify() ;
210
211 /**
212 * 変更ãƒ??タをå?期å?(å…??取り込んだ状æ…?に戻しますã?
213 *
214 * 変更タイãƒ?追åŠ?変更/削除)に応じて、å?ç�?�•れますã?
215 * 追åŠ?™‚は、追åŠ?�•れた行を削除しますã?
216 * 変更時ã?、変更された行をå…?�«戻しますã?
217 * 削除時ã?、削除フラグを解除しますã?
218 * それ以外ã?場å�?変更されてã�?�ªã�??å�?は、なにもしませんã€?
219 *
220 * @param row 処ç�?‚’戻ã�?取り消す)è¡?
221 */
222 void resetRow( int row ) ;
223
224 /**
225 * row 単位に変更されたタイãƒ?追åŠ?変更/削除)を返しますã?
226 *
227 * @param row 値が参照されるè¡?
228 *
229 * @return 変更されたタイプã?値 String
230 *
231 */
232 String getModifyType(int row) ;
233
234 /**
235 * row 単位に変更タイãƒ?追åŠ?変更/削除)をセãƒ?ƒˆしますã?
236 * こã?メソãƒ?ƒ‰では、データのバックアãƒ??は取りませんã€?
237 * タイプã?始めにä¸?º¦登録するとそれ以降に変更はかかりませんã€?
238 * なにも変更されてã�?�ªã�??合ã?, ""(ゼロストリング)の状態ですã?
239 *
240 * @param row 値が参照されるè¡?
241 * @param modType 変更タイãƒ?追åŠ?変更/削除)
242 *
243 */
244 void setModifyType( int row,String modType ) ;
245
246 /**
247 * 書込み許可を返しますã?
248 *
249 * @param aRow 値が参照されるè¡?
250 *
251 * @return 書込み可能(true)?�不可能(false)
252 */
253 boolean isRowWritable( int aRow ) ;
254
255 /**
256 * 書き込み可能なè¡?rowWritable == true)のチェãƒ?‚¯ボックスに対して
257 * 初期値ã‚?選択済みかã?非選択済みかを返しますã?
258 *
259 * @param row 値が参照されるè¡?
260 *
261 * @return 初期値チェãƒ?‚¯ON(true)?�チェãƒ?‚¯OFF(false)
262 */
263 boolean isRowChecked( int row ) ;
264
265 /**
266 * 検索結果ã�?オーバã?フローしたかどã�?�‹をチェãƒ?‚¯しますã?
267 * Query で検索した場合に、DB_MAX_ROW_COUNT またã?、Query.setMaxRowCount( int maxRowCount )
268 * でæŒ?®šされた値よりも検索結果が多い場合に、DBTableModel は、å?の設定å?までの
269 * ãƒ??タを取り込みますã?そã?ときに、オーバã?フローフラグを立てておくことで、最大件数ã‚?
270 * オーバã?したかどã�?�‹を判断しますã?
271 *
272 * @return オーバã?フロー(true)?�正常(false)
273 */
274 boolean isOverflow() ;
275
276 /**
277 * 検索されたDBTableModelが登録時に同ä¸?�‹どã�?�‹を判断する為の 整合æ?キーを取得しますã?
278 *
279 * ここでの整合æ?は、同ä¸?‚»ãƒ?‚·ョン(ユーザー)毎にユニã?クかどã�?�‹で対応しますã?
280 * åˆ?•£環å¢?è¤?•°のセãƒ?‚·ョンé–?での整合æ?は、確保できませんã€?
281 * 整合æ?キー は、オブジェクト作æ?時刻としますが、å°?�¥変更される可能性がありますã?
282 *
283 * @og.rev 3.5.5.5 (2004/04/23) 新規追åŠ?
284 *
285 * @return 整合æ?キー(オブジェクトã?作æ?時刻)
286 */
287 String getConsistencyKey() ;
288
289 // =======================================================================
290 //
291 // TableModel Interface と共有してã�?�Ÿメソãƒ?ƒ‰をã?独自に再定義しますã?
292 //
293 // =======================================================================
294
295 /**
296 * ãƒ??タãƒ??ブルå†??行ã?数を返しますã?
297 *
298 * @og.rev 3.5.3.1 (2003/10/31) インターフェースの見直しにより、追åŠ?
299 *
300 * @return モãƒ?ƒ«の行数
301 */
302 int getRowCount() ;
303
304 /**
305 * ãƒ??タãƒ??ブルå†??列ã?数を返しますã?
306 *
307 * @og.rev 3.5.3.1 (2003/10/31) インターフェースの見直しにより、追åŠ?
308 *
309 * @return モãƒ?ƒ«の列数
310 */
311 int getColumnCount() ;
312
313 /**
314 * カラãƒ?��を取得しますã?
315 *
316 * @og.rev 3.5.3.1 (2003/10/31) インターフェースの見直しにより、追åŠ?
317 *
318 * @param column æœ??のカラãƒ?? 0ã€?番目のカラãƒ?? 1、などとするã€?
319 *
320 * @return カラãƒ?��
321 */
322 String getColumnName(int column) ;
323
324 // =======================================================================
325 //
326 // DBTableModelImpl.java で定義されてã�?‚‹ public メソãƒ?ƒ‰残り全て
327 //
328 // =======================================================================
329
330 /**
331 * column に対応しã�?値を登録しますã?
332 * column には、番号ではなく、ラベルを指定しますã?
333 *
334 * @og.rev 3.5.6.4 (2004/07/16) interface に新規登録
335 *
336 * @param aRow 値が変更されるè¡?
337 * @param columnName 値が変更されるカラãƒ?��
338 * @param value 新しい値。null も可
339 *
340 */
341 void setValue( int aRow, String columnName, String value ) ;
342
343 /**
344 * column および row にあるセルのオブジェクトå?を設定しますã?
345 * value は新しい値ですã?こã?メソãƒ?ƒ‰は、tableChanged() 通知を生成しますã?
346 *
347 * @og.rev 3.1.0.0 (2003/03/20) 同期メソãƒ?ƒ‰(synchronized付き)を非同期に変更するã€?
348 * @og.rev 3.5.3.1 (2003/10/31) インターフェースの見直しにより、private 化するã?
349 * @og.rev 4.0.0.0 (2007/05/24) インターフェースの見直しにより、public 化するã?
350 *
351 * @param value 新しい値。null も可
352 * @param aRow 値が変更されるè¡?
353 * @param aColumn 値が変更されるå?
354 */
355 void setValueAt( String value, int aRow, int aColumn ) ;
356
357 /**
358 * 行を削除しますã?
359 * 物ç�?‰Š除ではなくã?論理削除ですã?
360 * ãƒ??タを取り込ã‚?�“とは可能ですã?
361 *
362 * @og.rev 3.5.6.4 (2004/07/16) interface に新規登録
363 *
364 * @param aRow 論理削除されるè¡?
365 *
366 */
367 void rowDelete( int aRow ) ;
368
369 /**
370 * row にあるセルのオブジェクトå?を置き換えて、行を削除しますã?
371 * 物ç�?‰Š除ではなくã?論理削除ですã?
372 * 値を置き換えたãƒ??タを取り込ã‚?�“とが可能ですã?
373 *
374 * @og.rev 3.5.6.4 (2004/07/16) interface に新規登録
375 *
376 * @param values 新しい配å?値ã€?
377 * @param aRow 論理削除されるè¡?
378 *
379 */
380 void rowDelete( String[] values, int aRow ) ;
381
382 /**
383 * 行を物ç�?‰Š除しますã?
384 * メモリ上で編é›?�™るå?合に使用しますが,ä¸?ˆ¬アプリケーションからの
385 * 使用は、物ç�?‰Š除の為,お勧めいたしませんã€?
386 *
387 * @og.rev 3.5.6.4 (2004/07/16) interface に新規登録
388 *
389 * @param aRow 物ç�?‰Š除されるè¡?
390 *
391 */
392 void removeValue( int aRow ) ;
393
394 /**
395 * row の下に属æ?値配å?を追åŠ?™»録しますã?
396 *
397 * @og.rev 3.5.6.4 (2004/07/16) interface に新規登録
398 *
399 * @param values 属æ?値配å?
400 * @param aRow 値が参照されるè¡?
401 *
402 */
403 void addValues( String[] values ,int aRow ) ;
404
405 /**
406 * row の下に属æ?値配å?を追åŠ?™»録しますã?
407 * isWritableをfalseにした場合ã?編é›?¸�可能な状態で追åŠ?�•れますã?
408 *
409 * @og.rev 4.3.1.0 (2008/09/04) interface に新規登録
410 *
411 * @param values 属æ?値配å?
412 * @param aRow 値が参照されるè¡?
413 * @param isWritable 編é›?¸�可能な状態で追åŠ?�™るか
414 *
415 */
416 void addValues( String[] values ,int aRow, boolean isWritable ) ;
417
418 /**
419 * row あるセルの属æ?値配å?を追åŠ?™»録しますã?
420 * これは,初期登録時ã?みに使用しますã?
421 *
422 * @og.rev 3.5.6.4 (2004/07/16) interface に新規登録
423 *
424 * @param values 属æ?値配å?
425 *
426 */
427 void addColumnValues( String[] values ) ;
428
429 /**
430 * row にあるセルのオブジェクトå?を置き換えますã?
431 *
432 * @og.rev 3.5.6.4 (2004/07/16) interface に新規登録
433 *
434 * @param values 新しい配å?値ã€?
435 * @param aRow 値が変更されるè¡?
436 *
437 */
438 void setValues( String[] values, int aRow ) ;
439
440 /**
441 * 変更済みフラグをå?に戻しますã?
442 *
443 * ä¸?ˆ¬には,ãƒ??タベã?スにãƒ??ブルモãƒ?ƒ«を登録するタイミングでã€?
444 * 変更済みフラグをå?に戻しますã?
445 *
446 * @og.rev 3.5.6.4 (2004/07/16) interface に新規登録
447 *
448 * @param aRow 値が参照されるè¡?
449 */
450 void resetModify( int aRow ) ;
451
452 /**
453 * 行が書き込み可能かどã�?�‹をセãƒ?ƒˆしますã?
454 * ãƒ?ƒ•ォルãƒ?およびなにも設定しなã�??合ã?, DEFAULT_WRITABLE ã�?
455 * 与えられてã�?�¾すã?
456 * これã�?true の場合ã?,書込み許可ですã?(チェãƒ?‚¯ボックスを表示)
457 * false の場合ã?,書込み不許可(チェãƒ?‚¯ボックスは表示されませんã€?
458 *
459 * @og.rev 3.5.6.4 (2004/07/16) interface に新規登録
460 *
461 * @param aRow 値が参照されるè¡?
462 * @param rw 書込み可能(true)?�不可能(false)
463 */
464 void setRowWritable( int aRow ,boolean rw ) ;
465
466 /**
467 * 書き込み可能なè¡?rowWritable == true)のチェãƒ?‚¯ボックスに対して
468 * 初期値ã‚?選択済みにするかã?非選択済みにするかをæŒ?®šしますã?
469 *
470 * @og.rev 3.5.6.4 (2004/07/16) interface に新規登録
471 *
472 * @param aRow 値が参照されるè¡?
473 * @param rw チェãƒ?‚¯ON(true)?�チェãƒ?‚¯OFF(false)
474 */
475 void setRowChecked( int aRow ,boolean rw ) ;
476
477 /**
478 * 行指定ã?書込み許可を与えますã?
479 * 具体的には,チェãƒ?‚¯ボックスの表示/非表示を指定しますã?
480 * これã�?true の場合ã?,書込み許可ですã?(チェãƒ?‚¯ボックスを表示)
481 * false の場合ã?,書込み不許可(チェãƒ?‚¯ボックスは表示されませんã€?
482 * 行毎に書込み許可/不許可を指定するå?合ã?,?‘カラãƒ?›®に writable
483 * カラãƒ?‚’用意して true/false を指定しますã?
484 * こã? writable カラãƒ?�¨の論理積によりæœ?µ‚的にチェãƒ?‚¯ボックスの
485 * 表示の ON/OFF が決まりますã?
486 * なにも設定しなã�??合ã?, ViewForm.DEFAULT_WRITABLE が設定されますã?
487 *
488 * @og.rev 3.5.6.4 (2004/07/16) interface に新規登録
489 *
490 * @param rw 書込み可能(true)?�不可能(false)
491 */
492 void setDefaultRowWritable( boolean rw ) ;
493
494 /**
495 * 書き込み可能なè¡?rowWritable == true)のチェãƒ?‚¯ボックスに対して
496 * 初期値ã‚?選択済みにするかã?非選択済みにするかをæŒ?®šしますã?
497 *
498 * @og.rev 3.5.6.4 (2004/07/16) interface に新規登録
499 *
500 * @param rw 選択状æ…?true)?�非選択状æ…?false)
501 */
502 void setDefaultRowChecked( boolean rw ) ;
503
504 /**
505 * 検索結果ã�?オーバã?フローしたかどã�?�‹を設定しますã?
506 * Query で検索した場合に、DB_MAX_ROW_COUNT またã?、Query.setMaxRowCount( int maxRowCount )
507 * でæŒ?®šされた値よりも検索結果が多い場合に、DBTableModel は、å?の設定å?までの
508 * ãƒ??タを取り込みますã?そã?ときに、オーバã?フローフラグを立てておくことで、最大件数ã‚?
509 * オーバã?したかどã�?�‹を判断しますã?
510 *
511 * @og.rev 3.5.6.4 (2004/07/16) interface に新規登録
512 *
513 * @param of オーバã?フロー(true)?�正常(false)
514 */
515 void setOverflow( boolean of ) ;
516
517 /**
518 * カラãƒ?åˆ?にmustタイプå?を割り当てますã?
519 * こã?値は、columnCheck 時ã? nullCheck ã‚?mustAnyCheck の
520 * チェãƒ?‚¯対象カラãƒ?�¨して認識されますã?
521 *
522 * @og.rev 4.1.2.1 (2008/03/13) interface に新規登録
523 *
524 * @param dbColumn カラãƒ?‚ªブジェクãƒ?
525 * @param type mustタイãƒ?must,mustAny)
526 */
527 void addMustType( int dbColumn, String type ) ;
528
529 /**
530 * mustType="must"時ã?カラãƒ?��をã?カンマ区åˆ?‚Šæ–?—å?として返しますã?
531 * こã?値は、columnCheck 時ã? nullCheck のチェãƒ?‚¯対象カラãƒ?�¨して
532 * 認識されますã?
533 * カラãƒ?��配å?は、ソート済みですã?
534 *
535 * @og.rev 4.1.2.1 (2008/03/13) interface に新規登録
536 *
537 * @return mustType="must"時ã?カラãƒ?��配å?(ソート済み)
538 */
539 String[] getMustArray();
540
541 /**
542 * mustType="mustAny" 他ã?カラãƒ?��をã?カンマ区åˆ?‚Šæ–?—å?として返しますã?
543 * こã?値は、columnCheck 時ã? mustAnyCheck のチェãƒ?‚¯対象カラãƒ?�¨して
544 * 認識されますã?
545 * カラãƒ?��配å?は、ソート済みですã?
546 *
547 * @og.rev 4.1.2.1 (2008/03/13) interface に新規登録
548 *
549 * @return mustType="mustAny"時ã?カラãƒ?��配å?(ソート済み)
550 */
551 String[] getMustAnyArray();
552 }