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.io;
017
018 import org.opengion.hayabusa.db.DBTableModel;
019 import org.opengion.hayabusa.resource.ResourceManager;
020
021 import java.io.BufferedReader;
022
023 /**
024 * DBTableModel インターフェース のオブジェクトをReader を用ã�?�¦入力する為の?Œå?通インターフェースですã?
025 *
026 * @og.group ファイル入åŠ?
027 *
028 * @version 4.0
029 * @author Kazuhiko Hasegawa
030 * @since JDK5.0,
031 */
032 public interface TableReader {
033
034 /**
035 * ヘッãƒ??æƒ??の入力時の区åˆ?‚Šæ–??
036 */
037 String TAB_SEPARATOR = "\t"; // é ?›®区åˆ?‚Šæ–??
038
039 /**
040 * DBTableModel から å�?½¢式ã?ãƒ??タを作æ?して,Reader より読み取りますã?
041 * こã?メソãƒ?ƒ‰は、EXCEL 読み込み時に使用しますã?
042 *
043 * @og.rev 4.0.0.0 (2006/09/31) 新規追åŠ?
044 *
045 * @see #isExcel()
046 */
047 void readDBTable() ;
048
049 /**
050 * DBTableModel から å�?½¢式ã?ãƒ??タを作æ?して,Reader より読み取りますã?
051 *
052 * @og.rev 3.5.4.3 (2004/01/05) 引数に、BufferedReader を受け取ル要に変更しますã?
053 *
054 * @param reader BufferedReaderオブジェクãƒ?
055 */
056 void readDBTable( final BufferedReader reader ) ;
057
058 /**
059 * リソースマネージャーをセãƒ?ƒˆしますã?
060 * これは、è¨?ª?ロケール)に応じã�?DBColumn をあらかじめ設定しておく為に
061 * å¿?¦�ですã?
062 * リソースマネージャーが設定されてã�?�ªã�??またã?、所定ã?キーの DBColumn ã�?
063 * リソースに存在しなã�??合ã?、å?部で DBColumn オブジェクトを作æ?しますã?
064 *
065 * @og.rev 4.0.0.0 (2005/01/31) lang â‡?ResourceManager へ変更
066 *
067 * @param resource リソースマネージャー
068 */
069 void setResourceManager( final ResourceManager resource ) ;
070
071 /**
072 * å†?ƒ¨の DBTableModel を返しますã?
073 *
074 * @return DBTableModelオブジェクãƒ?
075 */
076 DBTableModel getDBTableModel() ;
077
078 /**
079 * ãƒ??タを読み込ã‚??合ã?,区åˆ?‚Šæ–?—をセãƒ?ƒˆしますã?
080 *
081 * なお,このメソãƒ?ƒ‰は,サブクラスによっては,使用しなã�??合がありますã?
082 * もし?Œ使用しなã�?‚µブクラスを作æ?する場合ã?, UnsupportedOperationException
083 * ã‚?throw するように,サブクラスで実è£?�—て下さã�??
084 *
085 * @param separator 区åˆ?‚Šæ–??
086 */
087 void setSeparator( final String separator ) ;
088
089 /**
090 * DBTableModelのãƒ??タとして登録するæœ?¤§件数をこの値に設定しますã?
091 * サーバã?のメモリè³?º�と応答時間ã?確保ã?為ですã?
092 *
093 * @return æœ?¤§検索件数
094 */
095 int getMaxRowCount() ;
096
097 /**
098 * DBTableModelのãƒ??タとして登録するæœ?¤§件数をこの値に設定しますã?
099 * サーバã?のメモリè³?º�と応答時間ã?確保ã?為ですã?
100 *
101 * @param maxRowCount æœ?¤§検索件数
102 */
103 void setMaxRowCount( final int maxRowCount ) ;
104
105 /**
106 * DBTableModelのãƒ??タとしてEXCELファイルを読み込ã‚?�¨きã?シート名を設定しますã?
107 * これにより、è¤?•°の形式ã?異なるデータをé?次読み込ã‚?�“とã‚??シートをæŒ?®šして
108 * 読み取ることが可能になりますã?
109 * sheetNos と sheetName が同時にæŒ?®šされた場合ã?、sheetNos が優先されますã?エラーにはならなã�??でご注意くã�?�•ã�??
110 * のでご注意くã�?�•ã�??
111 * こã?メソãƒ?ƒ‰は、isExcel() == true の場合ã?み利用されますã?
112 *
113 * @og.rev 3.5.4.2 (2003/12/15) 新規追åŠ?
114 *
115 * @param sheetName シート名
116 * @see #setSheetNos( String )
117 */
118 void setSheetName( final String sheetName ) ;
119
120 /**
121 * EXCELファイルを読み込ã‚?�¨きã?シート番号を指定しまã�?初期値:0)ã€?
122 *
123 * EXCEL読み込み時にè¤?•°シートをマã?ジして取り込みますã?
124 * シート番号はã€? から始まる数字で表しますã?
125 * ヘッãƒ??は、最初ã?シートã?カラãƒ?½�置に合わせますã??ˆã?ãƒ?ƒ€ータイトルの自動認識ã?ありません。ï¼?
126 * よって、指定するシートã?、すべて同ä¸?ƒ¬イアウトでなã�?�¨取り込み時にカラãƒ??ずれが発生しますã?
127 *
128 * シート番号のæŒ?®šã?、カンマ区åˆ?‚Šで、è¤?•°æŒ?®šできますã?またã?N-M の様にハイフンで繋げることでã€?
129 * N 番から、M 番のシートç¯?›²をä¸?‹¬æŒ?®š可能ですã?またã?"*" による、å?シート指定が可能ですã?
130 * これらã?çµ?�¿合わせも可能ですã???0,1,3,5-8,10-* ??
131 * ただしã?"*" に関しては例外的に、ä¸?–‡字だけで、すべてのシートを表すか、N-* を最後にæŒ?®šするかの
132 * どちらかですã?途中にはã€?*" は、現れませんã€?
133 * シート番号はã€?‡�è¤?1,1,2,2)ã€??転(3,2,1) でのæŒ?®šが可能ですã?これは、そのæŒ?®šé?で、読み込まれますã?
134 * sheetNos と sheetName が同時にæŒ?®šされた場合ã?、sheetNos が優先されますã?エラーにはならなã�??でご注意くã�?�•ã�??
135 * こã?メソãƒ?ƒ‰は、isExcel() == true の場合ã?み利用されますã?
136 *
137 * 初期値はã€??ˆ第ä¸?‚·ートï¼?ですã?
138 *
139 * @og.rev 5.5.7.2 (2012/10/09) 新規追åŠ?
140 *
141 * @param sheetNos EXCELファイルのシート番号??から始まるï¼?
142 * @see #setSheetName( String )
143 */
144 void setSheetNos( final String sheetNos ) ;
145
146 /**
147 * EXCELファイルを読み込ã‚?�¨きã?シート単位ã?固定å?を設定するためã?カラãƒ?��とアドレスを指定しますã?
148 * カラãƒ?��は、カンマ区åˆ?‚ŠでæŒ?®šしますã?
149 * 対応するアドレスをã?EXCEL上ã?è¡?列を?�から始まる整数でカンマ区åˆ?‚ŠでæŒ?®šしますã?
150 * これにより、シートã?ä¸?�‹æ‰?�«書かれてã�?‚‹æƒ??をã?DBTableModel のカラãƒ?�«固定å?として
151 * 設定することができますã?
152 * 例として、DB定義書で、テーブル名をシートã?全レコードに設定したい場合などに使ã�?�¾すã?
153 * こã?メソãƒ?ƒ‰は、isExcel() == true の場合ã?み利用されますã?
154 *
155 * @og.rev 5.5.8.2 (2012/11/09) 新規追åŠ?
156 *
157 * @param constKeys 固定å?となるカラãƒ?��(CSV形å¼?
158 * @param constAdrs 固定å?となるアドレス(è¡?åˆ?è¡?åˆ?・・・)
159 */
160 void setSheetConstData( final String constKeys,final String constAdrs ) ;
161
162 /**
163 * ここにæŒ?®šされたカラãƒ??に NULL が現れた時点で読み取りを中止しますã?
164 *
165 * これは、指定ã?カラãƒ??å¿??とã�?�†事を条件に、そのレコードだけを読み取る処ç�?‚’行いますã?
166 * è¤?•°Sheetの場合ã?、次のSheetを読みますã?
167 * 現時点では、Excel の場合ã?み有効ですã?
168 *
169 * @og.rev 5.5.8.2 (2012/11/09) 新規追åŠ?
170 *
171 * @param clm カラãƒ??
172 */
173 void setNullBreakClm( final String clm ) ;
174
175 /**
176 * こã?クラスがã?EXCEL対応機è?を持ってã�?‚‹かどã�?�‹を返しますã?
177 *
178 * EXCEL対応機è?とは、シート名のセãƒ?ƒˆ、読み込みå…?ƒ•ァイルの
179 * Fileオブジェクト取得などの、特殊機è?ですã?
180 * 本来は、インターフェースをå?けるべきとè€?�ˆますが、taglib クラス等ã?
181 * 関係があり、問ã�?�ˆわせによる条件åˆ?²�で対応しますã?
182 *
183 * @og.rev 3.5.4.3 (2004/01/05) 新規追åŠ?
184 *
185 * @return EXCEL対応機è?を持ってã�?‚‹かどã�?�‹
186 */
187 boolean isExcel() ;
188
189 /**
190 * 読み取りå…?ƒ•ァイル名をセãƒ?ƒˆしますã?(DIR + Filename)
191 * これは、EXCEL追åŠ?©Ÿè?として実è£?�•れてã�?�¾すã?
192 *
193 * @og.rev 3.5.4.3 (2004/01/05) 新規作æ?
194 *
195 * @param filename 読み取りå…?ƒ•ァイルå�?
196 */
197 void setFilename( final String filename ) ;
198
199 /**
200 * 読み取りå…?ƒ•ァイルのカラãƒ??をã?外部(タグ)よりæŒ?®šしますã?
201 * ファイルに記述されã�?#NAME より優先して使用されますã?
202 *
203 * @og.rev 3.5.4.5 (2004/01/23) 新規作æ?
204 *
205 * @param clms 読み取りå…?ƒ•ァイルのカラãƒ??(カンマ区åˆ?‚Šæ–??
206 */
207 void setColumns( final String clms ) ;
208
209 /**
210 * 読み取りå…?ƒ•ァイルのエンコード文字å?を指定しますã?
211 * ファイルは、BufferedReader で受け取る為、本来は、エンコードã?不要ですがã€?
212 * 固定長ファイルの読み取り時ã?バイトコードå?割時に、指定ã?エンコードで
213 * åˆ?‰²するå¿?¦�がありますã?(例えば、半角文字ã?、Shift_JIS ではã€?¼‘バイãƒ?
214 *
215 * @og.rev 3.5.4.5 (2004/01/23) 新規作æ?
216 *
217 * @param enc ファイルのエンコード文字å?
218 */
219 void setEncode( final String enc ) ;
220
221 /**
222 * 行番号æƒ??をã?使用してã�?‚‹(true)/してã�?�ªã�?false)を指定しますã?
223 *
224 * 通常のフォーマットでは、各行ã?先é?に行番号がå?力されてã�?�¾すã?
225 * 読み取り時にã€?NAME 属æ?を使用する場合ã?、この行番号を無視してã�?�¾すã?
226 * #NAME 属æ?を使用せず、columns 属æ?でカラãƒ?��を指定するå?å�?他シスãƒ?ƒ の
227 * 出力ファイルを読み取るケースç?では、行番号も存在しなã�?‚±ースがありã?
228 * そã?様な場合に、useNumber="false" を指定すれã?、データのæœ??から読み取り始めますã?
229 * こã?場合ã?出力データのカラãƒ??並びé ?�Œ変更されたå?合ã?columns 属æ?ã‚?
230 * æŒ?®šしなおすå¿?¦�がありますã?で、できるã�?�‘ã€?NAME 属æ?を使用するように
231 * してくださいã€?
232 * なおã?EXCEL 入力には、この設定ã?適用されませんã€?暫定対å¿?
233 * 初期値は、true(使用する) ですã?
234 *
235 * @og.rev 3.7.0.5 (2005/04/11) 新規追åŠ?
236 *
237 * @param useNumber 行番号æƒ?? [true:使用してã�?‚‹/false:してã�?�ªい]
238 */
239 void setUseNumber( final boolean useNumber ) ;
240
241 /**
242 * ãƒ??タの読み飛ã?し件数を設定しますã?
243 *
244 * TAB区åˆ?‚Šãƒ?‚ストやEXCEL等ã?ãƒ??タの読み始めの初期値を指定しますã?
245 * ファイルの先é?行がã€?¼�行としてカウントしますã?で、設定å?は、読み飛ã?ã�?
246 * 件数になりますã?(?‘とæŒ?®šするとã€?¼‘件読み飛ã?しã??’行目から読み込みますã?)
247 * 読み飛ã?しã?、コメント行などは、無視しますã?で、実際の行数åˆ?ªみ飛ã?しますã?
248 * ?ƒNAME属æ?ã‚??columns 属æ?は、有効ですã?
249 *
250 * @og.rev 5.1.6.0 (2010/05/01) 新規作æ?
251 *
252 * @param count 読み始めの初期値
253 */
254 void setSkipRowCount( final int count ) ;
255
256 /**
257 * 読取å?ç�?�§ラベルをコードリソースにé€?¤‰換を行うかどã�?�‹を指定しますã?
258 *
259 * TableWriter_Renderer 系のクラスで出力したå?合ã?、コードリソースがラベルで出力されますã?
260 * そã?ファイルを読み取ると、当然、エラーになりますã?
261 * ここでは、コードリソースのカラãƒ?�«対して、ラベルからコードを求めるé?変換を行うことでã€?
262 * Renderer 系で出力したファイルを取り込ã‚?�“とができるようにしますã?
263 *
264 * ここでは、TableWriter 系と同様に、TableReader_Renderer 系のクラスを作るのではなくã?
265 * 属æ?値のフラグで、制御しますã?
266 * å°?�¥çš?�«は、TableWriter 系もå»?¢して、同様ã?フラグで制御するように変更する予定ですã?
267 *
268 * @og.rev 5.2.1.0 (2010/10/01) 新規作æ?
269 *
270 * @param useRenderer コードリソースのラベルé€?¤‰換を行うかどã�?�‹を指å®?
271 */
272 void setUseRenderer( final boolean useRenderer ) ;
273
274 /**
275 * ãƒ?ƒ�ãƒ?‚°æƒ??をå?力するかどã�?�‹を指定しますã?
276 *
277 * EXCELなどを読み取る場合ã?シートã?ージで読み取ると、エラー時ã?行番号がã?連番になるためã?
278 * どのシートなのかã?判らなくなりますã?
279 * そこで、どã�?�—てもわからなくなったå?合に備えて、デバッグæƒ??をå?力できるようにしますã?
280 * 通常は使用しませんので、設定を無視しますã?
281 * 初期値は、false:ãƒ?ƒ�ãƒ?‚°æƒ??をå?力しなã�?ですã?
282 *
283 * @og.rev 5.5.7.2 (2012/10/09) 新規作æ?
284 *
285 * @param useDebug ãƒ?ƒ�ãƒ?‚°æƒ??をå?力するかどã�?�‹を指å®?
286 */
287 void setDebug( final boolean useDebug ) ;
288 }