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 * 数字タイプのタイプ判定用リスト 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 では、1バイト) 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 * ファイルの先頭行が、0行としてカウントしますので、設定値は、読み飛ばす 273 * 件数になります。(1と指定すると、1件読み飛ばし、2行目から読み込みます。) 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}