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.hayabusa.common.HybsSystemException;
019    
020    /**
021     * DBTableModel の?‘行å?の特性を管ç�?�™るクラスですã?
022     * こã?クラスに?‘行å?の特性をセãƒ?ƒˆして、DBTableModelImpl#setDBRowHeader( int aRow, DBRowHeader rowHeader )
023     * を用ã�?�¦、ã?ãƒ?ƒ€ーãƒ??タを登録しますã?
024     * なおã?DBTableModel インターフェース 自体には、ã?ãƒ?ƒ€ーæƒ??を登録する手段はありませんので
025     * DBTableModel 実è£?‚¯ラスの独自メソãƒ?ƒ‰で、ã?ãƒ?ƒ€ーãƒ??タを与えるå¿?¦�がありますã?
026     *
027     * @og.rev 3.5.6.0 (2004/06/18) クラスのパッケージプライベã?ト化を行いますã?
028     * @og.group ãƒ??ブル管ç�?
029     *
030     * @version  4.0
031     * @author   Kazuhiko Hasegawa
032     * @since    JDK5.0,
033     */
034    class DBRowHeader {
035    
036            private boolean  writable ;
037            private boolean  checked  ;
038            private String[] bkupdata ;
039            private String   type     ;
040            private String   marker   ;
041    
042            /**
043             * パッケージプライベã?トな、コンストラクター
044             *
045             */
046            DBRowHeader() {
047                    initialise();
048            }
049    
050            /**
051             * ãƒ??タをå?期化しますã?
052             *
053             */
054            void clear() {
055                    initialise();
056            }
057    
058            private void initialise() {
059                    writable = DBTableModel.DEFAULT_WRITABLE;
060                    checked  = DBTableModel.DEFAULT_CHECKED ;
061                    bkupdata = null ;
062                    type     = "";
063                    marker   = "";
064            }
065    
066            /**
067             * 書込み許可を返しますã?
068             *
069             * @return  書込み可能(true)?�不可能(false)
070             */
071            boolean isWritable() {
072                    return writable;
073            }
074    
075            /**
076             * 行が書き込み可能かどã�?�‹をセãƒ?ƒˆしますã?
077             * ãƒ?ƒ•ォルãƒ?およびなにも設定しなã�??合ã?, DBTableModel.DEFAULT_WRITABLE ã�?
078             * 与えられてã�?�¾すã?
079             * これã�?true の場合ã?,書込み許可ですã?(チェãƒ?‚¯ボックスを表示)
080             * false の場合ã?,書込み不許可(チェãƒ?‚¯ボックスは表示されませんã€?
081             *
082             * @og.rev 3.1.1.0 (2003/03/28) 同期メソãƒ?ƒ‰(synchronized付き)を非同期に変更するã€?
083             *
084             * @param   rw 書込み可能(true)?�不可能(false)
085             */
086            void setWritable( final boolean rw ) {
087                    writable = rw;
088            }
089    
090            /**
091             * 書き込み可能なè¡?rowWritable == true)のチェãƒ?‚¯ボックスに対して
092             * 初期値ã‚?選択済みかã?非選択済みかを返しますã?
093             *
094             */
095            boolean isChecked() {
096                    return checked;
097            }
098    
099            /**
100             * 書き込み可能なè¡?rowWritable == true)のチェãƒ?‚¯ボックスに対して
101             * 初期値ã‚?選択済みにするかã?非選択済みにするかをæŒ?®šしますã?
102             *
103             * @og.rev 3.1.1.0 (2003/03/28) 同期メソãƒ?ƒ‰(synchronized付き)を非同期に変更するã€?
104             *
105             * @param   rw チェãƒ?‚¯ON(true)?�チェãƒ?‚¯OFF(false)
106             */
107            void setChecked( final boolean rw ) {
108                    checked = rw;
109            }
110    
111            /**
112             * row 単位に変更タイãƒ?追åŠ?変更/削除)をセãƒ?ƒˆしますã?
113             * タイプã?始めにä¸?º¦登録するとそれ以降に変更はかかりませんã€?
114             * つまりã?始めに 追åŠ?�§作æ?したãƒ??タは、その後変更があっても追åŠ??ままですã?
115             * なにも変更されてã�?�ªã�??合ã?, ""(ゼロストリング)の状態ですã?
116             *
117             * @og.rev 3.1.1.0 (2003/03/28) 同期メソãƒ?ƒ‰(synchronized付き)を非同期に変更するã€?
118             *
119             * @param   modType  変更タイãƒ?追åŠ?変更/削除)
120             */
121            void setType( final String modType ) {
122                    if( type == null || type.length() == 0 ) {
123                            type = modType ;
124                    }
125            }
126    
127            /**
128             * row 単位に変更タイãƒ?追åŠ?変更/削除)を返しますã?
129             * なにも変更されてã�?�ªã�??合ã?, ""(ゼロストリング)の状態ですã?
130             *
131             * @return   変更タイãƒ?追åŠ?変更/削除)
132             *
133             */
134            String getType() {
135                    return type;
136            }
137    
138            /**
139             * row 単位にバックアãƒ??ãƒ??タを保管しますã?
140             * こã?ãƒ??タは,æœ??に?‘度しか設定できません。つまりã?同ä¸?¡Œを何度ã‚?
141             * 書き換えたとしてもã?初めの状態にしか戻すことは出来ませんã€?
142             * こã?ãƒ??タã‚?履歴を管ç�?�§きるようにすれば, 書き換えたé€??に
143             * ãƒ??タを取りå?すことが可能になりますが,現在は対応してã�?�¾せんã€?
144             * ãƒ??タ設定時にã€??列コピã?を取得しますã?
145             *
146             * @og.rev 3.1.1.0 (2003/03/28) 同期メソãƒ?ƒ‰(synchronized付き)を非同期に変更するã€?
147             * @og.rev 3.5.6.0 (2004/06/18) 配å?をそのまま受け取らずに、arraycopy してセãƒ?ƒˆするã€?
148             *
149             * @param       bkup    バックアãƒ??ãƒ??タ配å?
150             */
151            void setBackupData( final String[] bkup ) {
152                    if( bkupdata == null ) {
153                            int size = bkup.length ;
154                            bkupdata = new String[size];
155                            System.arraycopy( bkup,0,bkupdata,0,size );
156                    }
157            }
158    
159            /**
160             * row 単位にバックアãƒ??ãƒ??タを取りå?しますã?
161             * æœ??に登録されたデータを返しますã?
162             * まã�??なにも修正(追åŠ?変更/削除)が行われてã�?�ªã�??合ã?、null を返しますã?
163             *
164             * @og.rev 3.5.6.0 (2004/06/18) 配å?をそのまま返さずに、clone して返しますã?
165             * @og.rev 3.6.0.0 (2004/09/22) バックアãƒ??ãƒ??タが存在しなã�??合ã?エラーとするã€?
166             *
167             * @return   バックアãƒ??ãƒ??タ(存在しなã�??合ã?、エラー)
168             */
169            String[] getBackupData() {
170                    if( bkupdata != null ) {
171                            return bkupdata.clone();
172                    }
173    
174                    String errMsg = "バックアãƒ??ãƒ??タが存在しませんã€? +
175                                            "事前に、getType() で更新状態を取得後ã?" +
176                                            "こã?処ç�??実行可否を判断して下さã�??type=[" + type + "]";
177                    throw new HybsSystemException( errMsg );
178            }
179    
180            /**
181             * row 単位にæŒ?®šã?マã?カーを付けますã?
182             * マã?カーは、表示等に行に色をつけたりするã?に使用できますã?
183             * 初期値は、空æ–?­?"" ですã?
184             *
185             * @param       marker  マã?カーæ–?­—å?
186             *
187             */
188            void setMarker( final String marker ) {
189                    if( marker == null ) { this.marker = ""; }
190                    else {                 this.marker = marker; }
191            }
192    
193            /**
194             * row 単位にæŒ?®šされたマã?カーを返しますã?
195             * マã?カーは、表示等に行に色をつけたりするã?に使用できますã?
196             * 初期値は、空æ–?­?"" ですã?
197             *
198             * @return   マã?カーæ–?­—å?
199             *
200             */
201            String getMarker() {
202                    return marker;
203            }
204    }