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