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    }