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.fukurou.util.HybsEntry;
020    
021    import java.io.PrintWriter;
022    import java.util.List;
023    
024    /**
025     * DBTableModel インターフェース のオブジェクトをPrintWriter を用ã�?�¦出力する為の?Œå?通インターフェースですã?
026     *
027     * @og.group ファイル出åŠ?
028     *
029     * @version  4.0
030     * @author   Kazuhiko Hasegawa
031     * @since    JDK5.0,
032     */
033    public interface TableWriter {
034    
035            /** タブé?目区åˆ?‚Šæ–?­? */
036            String TAB_SEPARATOR = "\t";            // タブé?目区åˆ?‚Šæ–?­?
037    
038            /** カンマé?目区åˆ?‚Šæ–?­? */
039            String CSV_SEPARATOR = ",";                     // カンマé?目区åˆ?‚Šæ–?­? 3.5.6.0 (2004/06/18)
040    
041            /**
042             * 数字タイプã?タイプ判定用リスãƒ?
043             */
044    //      String NUMBER_TYPE_LIST = "|S9|R|";                             // 3.5.6.0 (2004/06/18)
045    
046            /**
047             * DBTableModel から å�?½¢式ã?ãƒ??タを作æ?して,PrintWriter に書きå?しますã?
048             * こã?メソãƒ?ƒ‰は、EXCEL 書きå?し時に使用しますã?
049             *
050             * @og.rev 4.0.0.0 (2006/09/31) 新規追åŠ?
051             * @see #isExcel()
052             */
053            void writeDBTable() ;
054    
055            /**
056             * DBTableModel から å�?½¢式ã?ãƒ??タを作æ?して,PrintWriter に書きå?しますã?
057             *
058             * @og.rev 3.5.4.3 (2004/01/05) 引数に PrintWriter を受け取るよã�?�«変更しますã?
059             *
060             * @param       writer PrintWriterオブジェクãƒ?
061             */
062            void writeDBTable( final PrintWriter writer ) ;
063    
064            /**
065             * DBTableModel をセãƒ?ƒˆしますã?
066             *
067             * @og.rev 3.5.4.2 (2003/12/15) lang 引数も同時に設定しますã?
068             *
069             * @param       table   DBTableModelオブジェクãƒ?
070             * @param       lang    è¨?ª?
071             */
072            void setDBTableModel( final DBTableModel table, final String lang ) ;
073    
074            /**
075             * å†?ƒ¨の DBTableModel を返しますã?
076             *
077             * @return  DBTableModelオブジェクãƒ?
078             */
079            DBTableModel getDBTableModel() ;
080    
081            /**
082             * DBTableModelの出力é?をセãƒ?ƒˆしますã?
083             * Label,Name,Size,Class,Data のå�?ƒ•ィールドã?頭æ–?­—ã?アルファベットで
084             * 出力é?を設定しますã?
085             *
086             * @param   headerSequence 出力é? (LNSCD など)
087             */
088            void setHeaderSequence( final String headerSequence ) ;
089    
090            /**
091             * DBTableModelの出力é?を返しますã?
092             * Label,Name,Size,Class,Data のå�?ƒ•ィールドã?頭æ–?­—ã?アルファベットで
093             * 出力é?を設定しますã?
094             *
095             * @return  出力é? (LNSCD など)
096             */
097            String getHeaderSequence() ;
098    
099            /**
100             * ãƒ??タを書き込ã‚??合ã?,区åˆ?‚Šæ–?­—をセãƒ?ƒˆしますã?
101             * なお,このメソãƒ?ƒ‰は,サブクラスによっては,使用しなã�??合がありますã?
102             * もし?Œ使用しなã�?‚µブクラスを作æ?する場合ã?, UnsupportedOperationException
103             * ã‚?throw するように,サブクラスで実è£?�—て下さã�??
104             *
105             * @param   separator 区åˆ?‚Šæ–?­?
106             */
107            void setSeparator( final String separator ) ;
108    
109            /**
110             * DBTableModelのãƒ??タとして書き込ã‚?�¨きに、追åŠ?ƒ¢ードで書き込ã‚?�‹どã�?�‹[true/false]を設定しますã?
111             *
112             * @og.rev 3.5.4.2 (2003/12/15) 新規追åŠ?
113             *
114             * @param   flag 追åŠ?ƒ¢ードで書き込ã‚?�‹どã�?�‹[true:追åŠ?ƒ¢ーãƒ?false:通常モード]
115             */
116            void setAppend( final boolean flag ) ;
117    
118            /**
119             * DBTableModelのãƒ??タとして書き込ã‚?�¨きに、追åŠ?ƒ¢ードで書き込ã‚?�‹どã�?�‹を取得しますã?
120             *
121             * @og.rev 3.5.4.2 (2003/12/15) 新規追åŠ?
122             *
123             * @return      追åŠ?ƒ¢ードで書き込ã‚?�‹どã�?�‹[true:追åŠ?ƒ¢ーãƒ?false:通常モード]
124             */
125            boolean isAppend() ;
126    
127            /**
128             * DBTableModelのãƒ??タとして書き込ã‚?�¨きã?シート名を設定しますã?
129             * これは、EXCEL追åŠ?©Ÿè?として実è£?�•れてã�?�¾すã?
130             *
131             * @og.rev 3.5.4.2 (2003/12/15) 新規追åŠ?
132             *
133             * @param   sheetName シート名
134             */
135            void setSheetName( final String sheetName ) ;
136    
137            /**
138             * EXCEL雛型参è?ファイルのシート名を設定しますã?
139             * これは、EXCEL追åŠ?©Ÿè?として実è£?�•れてã�?�¾すã?
140             *
141             * EXCELファイルを書きå?す時にã€?››型として参ç?するシート名を指定しますã?
142             * これにより、è¤?•°の形式ã?異なるデータをé?次書きå?したã‚?appendモードを併用)する
143             * ことã‚??シートをæŒ?®šして新規にEXCELを作æ?する場合にフォーãƒ?‚’設定する事が可能になりますã?
144             * 初期値は、null(第ä¸?‚·ーãƒ? ですã?
145             *
146             * @og.rev 3.5.4.3 (2004/01/05) 新規追åŠ?
147             *
148             * @param   sheetName シート名
149             */
150            void setRefSheetName( final String sheetName ) ;
151    
152            /**
153             * こã?クラスがã?EXCEL対応機è?を持ってã�?‚‹かどã�?�‹を返しますã?
154             *
155             * EXCEL対応機è?とは、シート名のセãƒ?ƒˆã€?››型参照ファイル名ã?セãƒ?ƒˆã€?
156             * 書き込みå…?ƒ•ァイルのFileオブジェクト取得などの、特殊機è?ですã?
157             * 本来は、インターフェースをå?けるべきとè€?�ˆますが、taglib クラス等ã?
158             * 関係があり、問ã�?�ˆわせによる条件åˆ?²�で対応しますã?
159             *
160             * @og.rev 3.5.4.3 (2004/01/05) 新規追åŠ?
161             *
162             * @return      EXCEL対応機è?を持ってã�?‚‹かどã�?�‹
163             */
164            boolean isExcel() ;
165    
166            /**
167             * 出力å?ファイル名をセãƒ?ƒˆしますã?(DIR + Filename)
168             * これは、EXCEL追åŠ?©Ÿè?として実è£?�•れてã�?�¾すã?
169             *
170             * @og.rev 3.5.4.3 (2004/01/05) 新規作æ?
171             *
172             * @param   filename 出力å?ファイルå�?
173             */
174            void setFilename( final String filename ) ;
175    
176            /**
177             * EXCEL雛型参è?ファイル名をセãƒ?ƒˆしますã?(DIR + Filename)
178             * これは、EXCEL追åŠ?©Ÿè?として実è£?�•れてã�?�¾すã?
179             *
180             * @og.rev 3.5.4.3 (2004/01/05) 新規作æ?
181             *
182             * @param   filename EXCEL雛型参è?ファイルå�?
183             */
184            void setRefFilename( final String filename ) ;
185    
186            /**
187             * 読み取りå…?ƒ•ァイルのエンコード文字å?を指定しますã?
188             * ファイルは、BufferedReader で受け取る為、本来は、エンコードã?不要ですがã€?
189             * 固定長ファイルの読み取り時ã?バイトコードå?割時に、指定ã?エンコードで
190             * åˆ?‰²するå¿?¦�がありますã?(例えば、半角文字ã?、Shift_JIS ではã€?¼‘バイãƒ?
191             *
192             * @og.rev 3.5.4.5 (2004/01/23) 新規作æ?
193             *
194             * @param   enc ファイルのエンコード文字å?
195             */
196            void setEncode( final String enc ) ;
197    
198            /**
199             * 行番号æƒ??をã?出力すã‚?true)/しなã�?false)を指定しますã?
200             *
201             * 通常のフォーマットでは、各行ã?先é?に行番号をå?力しますã?
202             * これはã€?NAME 属æ?を使用する場合には、å¿?�š出力するå¿?¦�がありますã?
203             * (#NAME 属æ?は、読み取り時には、å¿??ですã?)
204             * こã?、å?頭の行番号が不要な場å�?つまりã?他ã?シスãƒ?ƒ へのãƒ??タ出力ã?
205             * こã?シスãƒ?ƒ ではã€?NAME 属æ?がå?力されなã�?�Ÿめã?読み込みできませんã€?
206             * こã?行番号をå?力しなã�?‚ˆã�?�«できますã?
207             * 初期値は、true(出力すã‚? ですã?
208             *
209             * @og.rev 3.7.0.2 (2005/02/14) 新規追åŠ?
210             *
211             * @param   useNumber 行番号æƒ?? [true:出力すã‚?false:しない]
212             */
213            void setUseNumber( final boolean useNumber ) ;
214    
215            /**
216             * パラメーターリストをセãƒ?ƒˆしますã?
217             * å†?ƒ¨は、HybsEntry クラスを持ってã�?�¾すã?
218             * 引数がã?null の場合ã?、何もしませんã€?
219             *
220             * @og.rev 4.0.0.0 (2005/01/31) 新規追åŠ?
221             *
222             * @param       listParam       パラメーターリスãƒ?
223             */
224            void setParam( final List<HybsEntry> listParam ) ;
225    
226            /**
227             * 出力å?ファイルのカラãƒ??をã?外部(タグ)よりæŒ?®šしますã?
228             * ただしã?æŒ?®šã?カラãƒ?��は、DBTableModel上に存在してã�?‚‹å¿?¦�がありますã?
229             *
230             * @og.rev 4.0.0.0 (2005/11/30) 新規追åŠ?
231             *
232             * @param   clms 出力å?ファイルのカラãƒ??(カンマ区åˆ?‚Šæ–?­?
233             */
234            void setColumns( final String clms ) ;
235    
236            /**
237             * EXCEL出力時のãƒ?ƒ•ォルトフォント名を設定しますã?
238             * これは、EXCEL追åŠ?©Ÿè?として実è£?�•れてã�?�¾すã?
239             *
240             * EXCELファイルを書きå?す時に、デフォルトフォント名を指定しますã?
241             * フォント名は、EXCELのフォント名をそのまま使用してくださいã€?
242             * å†?ƒ¨çš?�«、POI の org.apache.poi.hssf.usermodel.HSSFFont#setFontName( String )
243             * に設定されますã?
244             * 初期値は、シスãƒ?ƒ リソース の TABLE_WRITER_DEFAULT_FONT_NAME ですã?
245             *
246             * @og.rev 3.8.5.3 (2006/08/07) 新規追åŠ?
247             *
248             * @param   fontName ãƒ?ƒ•ォルトフォント名
249             */
250            void setFontName( String fontName ) ;
251    
252            /**
253             * EXCEL出力時のãƒ?ƒ•ォルトフォントã?イント数を設定しますã?
254             * これは、EXCEL追åŠ?©Ÿè?として実è£?�•れてã�?�¾すã?
255             *
256             * EXCELファイルを書きå?す時に、デフォルトã?イント数を指定しますã?
257             * å†?ƒ¨çš?�«、POI の org.apache.poi.hssf.usermodel.HSSFFont#setFontHeightInPoints( short )
258             * に設定されますã?
259             * 初期値は、シスãƒ?ƒ リソース の TABLE_WRITER_DEFAULT_FONT_POINTS ですã?
260             *
261             * @og.rev 3.8.5.3 (2006/08/07) 新規追åŠ?
262             *
263             * @param   point フォントã?イント数
264             */
265            void setFontPoint( short point ) ;
266    
267            /**
268             * ãƒ??タの書き込み開始位置を設定しまã�?初期値:0)ã€?
269             *
270             * TAB区åˆ?‚Šãƒ?‚­ストやEXCEL等ã?ãƒ??タの書き込みの開始位置を指定しますã?
271             * 属æ?名ã?、行を飛ã?すå?ç�?�¨ã�?�†ことで、readTable タグと同じ名称ですã?
272             * ファイルの先é?行がã€?¼�行としてカウントしますã?で、設定å?は、読み飛ã?ã�?
273             * 件数になりますã?(?‘とæŒ?®šするとã€?¼‘件読み飛ã?しã??’行目から読み込みますã?)
274             * 行ã?読み飛ã?しと、カラãƒ??読み飛ã?ã�?columns)、refFileURL、refFilenameã€?
275             * refSheetName とともに使用すれば、ある程度のレイアウト設定が可能ですã?
276             * なおã?こã?機è?は、TableWriter_Excel のみに実è£?�—ますã?
277             *
278             * @og.rev 5.7.9.0 (2014/08/08) 新規作æ?
279             *
280             * @param       skipRowCount 書き込み開始位置
281             */
282            void setSkipRowCount( int skipRowCount );
283    
284            /**
285             * 書込処ç�?�§コードリソースのラベル変換を行うかどã�?�‹を指定しますã?
286             *
287             * コードリソースをそのままの値で出力すると、数字や記号になり何が書かれてã�?‚‹のã�?
288             * 不æ?になりますã?
289             * これは、コードリソースをラベルに変換して出力するかどã�?�‹を指定しますã?
290             * 当然、コードã?ユニã?クですが、ラベルはユニã?クになるかどã�?�‹保障はされてã�?�¾せんので
291             * TableReader 系で読み込ã‚??合には、リスクが発生しますã?
292             * またã?TableReader 系で読み込ã‚??合にもã?ラベルからコードを求めるé?変換を行うようにã€?
293             * setUseRenderer メソãƒ?ƒ‰でæŒ?®šするå¿?¦�がありますã?
294             *
295             * 従来は、TableWriter 系に、TableWriter_Renderer 系のクラスを作って対応してã�?�¾したがã?
296             * こã?メソãƒ?ƒ‰の属æ?値のフラグで、制御しますã?
297             *
298             * @og.rev 5.2.1.0 (2010/10/01) 新規作æ?
299             *
300             * @param       useRenderer     コードリソースのラベル変換を行うかどã�?�‹を指å®?
301             */
302            void setUseRenderer( final boolean useRenderer ) ;
303    }