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             * @return 選択済みの場合ã?、true , そうでなã�?�¨きã?、flse を返しますã?
095             */
096            boolean isChecked() {
097                    return checked;
098            }
099    
100            /**
101             * 書き込み可能なè¡?rowWritable == true)のチェãƒ?‚¯ボックスに対して
102             * 初期値ã‚?選択済みにするかã?非選択済みにするかをæŒ?®šしますã?
103             *
104             * @og.rev 3.1.1.0 (2003/03/28) 同期メソãƒ?ƒ‰(synchronized付き)を非同期に変更するã€?
105             *
106             * @param   rw チェãƒ?‚¯ON(true)?�チェãƒ?‚¯OFF(false)
107             */
108            void setChecked( final boolean rw ) {
109                    checked = rw;
110            }
111    
112            /**
113             * row 単位に変更タイãƒ?追åŠ?変更/削除)をセãƒ?ƒˆしますã?
114             * タイプã?始めにä¸?º¦登録するとそれ以降に変更はかかりませんã€?
115             * つまりã?始めに 追åŠ?�§作æ?したãƒ??タは、その後変更があっても追åŠ??ままですã?
116             * なにも変更されてã�?�ªã�??合ã?, ""(ゼロストリング)の状態ですã?
117             *
118             * @og.rev 3.1.1.0 (2003/03/28) 同期メソãƒ?ƒ‰(synchronized付き)を非同期に変更するã€?
119             *
120             * @param   modType  変更タイãƒ?追åŠ?変更/削除)
121             */
122            void setType( final String modType ) {
123                    if( type == null || type.length() == 0 ) {
124                            type = modType ;
125                    }
126            }
127    
128            /**
129             * row 単位に変更タイãƒ?追åŠ?変更/削除)を返しますã?
130             * なにも変更されてã�?�ªã�??合ã?, ""(ゼロストリング)の状態ですã?
131             *
132             * @return   変更タイãƒ?追åŠ?変更/削除)
133             *
134             */
135            String getType() {
136                    return type;
137            }
138    
139            /**
140             * row 単位にバックアãƒ??ãƒ??タを保管しますã?
141             * こã?ãƒ??タは,æœ??に?‘度しか設定できません。つまりã?同ä¸?¡Œを何度ã‚?
142             * 書き換えたとしてもã?初めの状態にしか戻すことは出来ませんã€?
143             * こã?ãƒ??タã‚?履歴を管ç�?�§きるようにすれば, 書き換えたé€??に
144             * ãƒ??タを取りå?すことが可能になりますが,現在は対応してã�?�¾せんã€?
145             * ãƒ??タ設定時にã€??列コピã?を取得しますã?
146             *
147             * @og.rev 3.1.1.0 (2003/03/28) 同期メソãƒ?ƒ‰(synchronized付き)を非同期に変更するã€?
148             * @og.rev 3.5.6.0 (2004/06/18) 配å?をそのまま受け取らずに、arraycopy してセãƒ?ƒˆするã€?
149             *
150             * @param       bkup    バックアãƒ??ãƒ??タ配å?
151             */
152            void setBackupData( final String[] bkup ) {
153                    if( bkupdata == null ) {
154                            int size = bkup.length ;
155                            bkupdata = new String[size];
156                            System.arraycopy( bkup,0,bkupdata,0,size );
157                    }
158            }
159    
160            /**
161             * row 単位にバックアãƒ??ãƒ??タを取りå?しますã?
162             * æœ??に登録されたデータを返しますã?
163             * まã�??なにも修正(追åŠ?変更/削除)が行われてã�?�ªã�??合ã?、null を返しますã?
164             *
165             * @og.rev 3.5.6.0 (2004/06/18) 配å?をそのまま返さずに、clone して返しますã?
166             * @og.rev 3.6.0.0 (2004/09/22) バックアãƒ??ãƒ??タが存在しなã�??合ã?エラーとするã€?
167             *
168             * @return   バックアãƒ??ãƒ??タ(存在しなã�??合ã?、エラー)
169             */
170            String[] getBackupData() {
171                    if( bkupdata != null ) {
172                            return bkupdata.clone();
173                    }
174    
175                    String errMsg = "バックアãƒ??ãƒ??タが存在しませんã€? +
176                                            "事前に、getType() で更新状態を取得後ã?" +
177                                            "こã?処ç�??実行可否を判断して下さã�??type=[" + type + "]";
178                    throw new HybsSystemException( errMsg );
179            }
180    
181            /**
182             * row 単位にæŒ?®šã?マã?カーを付けますã?
183             * マã?カーは、表示等に行に色をつけたりするã?に使用できますã?
184             * 初期値は、空æ–?­?"" ですã?
185             *
186             * @param       marker  マã?カーæ–?­—å?
187             *
188             */
189            void setMarker( final String marker ) {
190                    if( marker == null ) { this.marker = ""; }
191                    else {                 this.marker = marker; }
192            }
193    
194            /**
195             * row 単位にæŒ?®šされたマã?カーを返しますã?
196             * マã?カーは、表示等に行に色をつけたりするã?に使用できますã?
197             * 初期値は、空æ–?­?"" ですã?
198             *
199             * @return   マã?カーæ–?­—å?
200             *
201             */
202            String getMarker() {
203                    return marker;
204            }
205    }