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    }