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    }