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 }