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    }