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 */ 016package org.opengion.hayabusa.db; 017 018import org.opengion.hayabusa.common.HybsSystemException; 019 020/** 021 * DBTableModel の1行分の特性を管理するクラスです。 022 * このクラスに1行分の特性をセットして、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 */ 034class 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 * このデータは,最初に1度しか設定できません。つまり、同一行を何度も 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}