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    }