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    }