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.taglib; 017 018 import org.opengion.hayabusa.common.HybsSystem; 019 import org.opengion.hayabusa.common.HybsSystemException; 020 import org.opengion.hayabusa.db.DBTableModel; 021 import org.opengion.hayabusa.io.TableWriter; 022 import org.opengion.fukurou.util.FileUtil; 023 import org.opengion.fukurou.util.HybsEntry; 024 import org.opengion.fukurou.util.Closer ; 025 import org.opengion.fukurou.util.StringUtil ; 026 import static org.opengion.fukurou.util.StringUtil.nval ; 027 028 import javax.servlet.ServletResponse ; 029 import javax.servlet.http.HttpServletResponse ; 030 import javax.servlet.jsp.JspWriter ; 031 032 import java.util.zip.GZIPOutputStream; 033 import java.util.zip.ZipOutputStream; 034 import java.util.zip.ZipEntry; 035 import java.util.List; 036 import java.util.ArrayList; 037 import java.util.Locale; 038 import java.io.File; 039 import java.io.OutputStream; 040 import java.io.PrintWriter; 041 import java.io.FileOutputStream; 042 import java.io.ByteArrayOutputStream; 043 import java.io.ObjectOutputStream; 044 import java.io.ObjectInputStream; 045 import java.io.IOException; 046 047 /** 048 * DBTableModelオブジェクトを??ファイルに出力するタグです? 049 * 050 * ??タ(DBTableModel)と、コントローラ(WriteTableTagForm)を与えて? 051 * 外部からコントロールすることで、各種形式で ??タ(DBTableModel)を表示できます? 052 * writeTableタグ に対して、コマンドを与えることにより、?部のコントローラの 053 * 実?対応した? 形式で??タを作?します? 054 * 055 * @og.formSample 056 * ●形式? 057 * <og:writeTable 058 * fileURL = "{@USER.ID}" 保存??レクトリ? 059 * filename = "{@filename}" 保存ファイル? 060 * encode = "UnicodeLittle" 保存ファイルエンコード名 061 * /> 062 * 063 * ●body?あ?EVAL_BODY_BUFFERED:BODYを評価し?{@XXXX} を解析しま? 064 * 065 * ●Tag定義?? 066 * <og:writeTable 067 * writerClass 【TAG】実際に書き?すクラス名?略称(TableWriter_**** クラスの ****)を指定しま?初期値:Default) 068 * separator 【TAG】可変長ファイルを作?するとき??区??をセ?しま?(初期値:TableWriter#TAB_SEPARATOR[= ]) 069 * headerSequence 【TAG】DBTableModelの出力?(LNSCD など)をセ?しま? 070 * fileURL 【TAG】ファイル保存??レクトリ名を?しま? 071 * filename 【TAG】ファイルを作?するとき?ファイル名をセ?しま?(初期値:FILE_FILENAME[=UnicodeLittle]) 072 * beforeDelete 【TAG】事前にファイルを削除するかど?をセ?しま?(初期値:false) 073 * encode 【TAG】ファイルを作?するとき?ファイルエンコー?ング名をセ?しま?(初期値:FILE_ENCODE[=UnicodeLittle]) 074 * fileAppend 【TAG】追?ードで書き込?ど?[true/false]を指定しま?初期値:false[新規モード]) 075 * direct 【?】結果をダイレクトにEXCEL起動するかど?[true/false]を指定しま?初期値:false[ファイル]) 076 * zip 【TAG】結果をファイルに出力するときに、ZIPで圧縮するかど?[true/false]を指定しま?初期値:false) 077 * tableId 【TAG?通常使?せん)sessionから?す?DBTableModelオブジェクト? ID 078 * scope 【TAG】キャ?ュする場合?スコープ[request/page/session/applicaton]を指定しま?初期値:session) 079 * disposition 【TAG】Content-Disposition (inline:埋め込?attachment:?アログを起?を指定しま?初期値:attachment) 080 * sheetName 【TAG】EXCELファイルを書き?すとき?シート名を設定しま? 081 * refSheetName 【TAG】EXCEL雛型参?ファイルのシート名を設定しま? 082 * refFileURL 【TAG】EXCEL雛型参?ファイルの?レクトリ名をセ?しま? 083 * refFilename 【TAG】EXCEL雛型参?ファイル名をセ?しま? 084 * useNumber 【TAG】行番号??を?出力す?しない[true/false]を指定しま?初期値:true) 085 * columns 【TAG】書き込み先ファイルのカラ??を?外部(タグ)より?しま? 086 * useRenderer 【TAG】書込処?コードリソースのラベル変換を行うかど?を指定しま?(初期値:USE_TABLE_WRITER_RENDERER[=false]) 087 * selectedAll 【TAG】チェ?行?みを対象にするかを?しま?初期値:true)? 088 * fontName 【TAG】EXCEL出力時の?ォルトフォント名を設定しま?(初期値:TABLE_WRITER_DEFAULT_FONT_NAME[=?? ?ゴシ?]) 089 * fontPoint 【TAG】EXCEL出力時の?ォルトフォント?イント数を設定しま? 090 * language 【TAG】タグ?で使用する?コード[ja/en/zh/…]を指定しま? 091 * caseKey 【TAG】このタグ自体を利用するかど?の条件キーを指定しま?初期値:null) 5.7.7.2 (2014/06/20) 092 * caseVal 【TAG】このタグ自体を利用するかど?の条件値を指定しま?初期値:null) 5.7.7.2 (2014/06/20) 093 * caseNN 【TAG】指定?値が?null/ゼロ?? でな???Not Null=NN)は、このタグは使用されま?初期値:true) 5.7.7.2 (2014/06/20) 094 * caseNull 【TAG】指定?値が?null/ゼロ?? の場合?、このタグは使用されま?初期値:true) 5.7.7.2 (2014/06/20) 095 * debug 【TAG】デバッグ??を?力するかど?[true/false]を指定しま?初期値:false) 096 * > ... Body ... 097 * </og:writeTable> 098 * 099 * ●使用? 100 * <og:writeTable ????? > 101 * <og:writeTableParam 102 * key = "Tablename" value="GE12" 103 * /> 104 * <og:writeTableParam 105 * key = "First" First:??に登録 106 * > 107 * insert into GE12bk 108 * select * from GE12 109 * where SYSTEM_ID='**' 110 * </og:writeTableParam 111 * <og:writeTableParam 112 * key = "First" First:の?番目に登録 113 * > 114 * delete from GE12 where SYSTEM_ID='**' and KBSAKU='0' 115 * </og:writeTableParam 116 * <og:writeTableParam 117 * key = "Last" Last:?に登録 118 * > 119 * update GE12 set XXXX='YYYY' where SYSTEM_ID='**' and KBSAKU='0' 120 * </og:writeTableParam 121 * </og:writeTableParam 122 * 123 * @og.group ファイル出? 124 * 125 * @version 4.0 126 * @author Kazuhiko Hasegawa 127 * @since JDK5.0, 128 */ 129 public class WriteTableTag extends CommonTagSupport { 130 //* こ?プログラ??VERSION??を設定します? {@value} */ 131 private static final String VERSION = "5.7.7.2 (2014/06/20)" ; 132 133 private static final long serialVersionUID = 577220140620L ; 134 135 private final String BASE_URL = HybsSystem.sys( "FILE_URL" ); 136 137 private String separator = TableWriter.TAB_SEPARATOR; // ?区??? 138 private String headerSequence = null; // ヘッ???の並び? 139 private String fileURL = BASE_URL; 140 private String filename = HybsSystem.sys( "FILE_FILENAME" ); // ファイル? 141 private String refFileURL = BASE_URL; // 3.5.4.3 (2004/01/05) 142 private String refFilename = null; // 3.5.4.3 (2004/01/05) 143 private String fontName = HybsSystem.sys( "TABLE_WRITER_DEFAULT_FONT_NAME" ); // 3.8.5.3 (2006/08/07) 144 private String fontPoint = HybsSystem.sys( "TABLE_WRITER_DEFAULT_FONT_POINTS" ); // 3.8.5.3 (2006/08/07) 145 private String encode = HybsSystem.sys( "FILE_ENCODE" ); // ファイルエンコー?ング "DEFAULT","JISAutoDetect" ,"JIS", "EUC_JP", "MS932", "SJIS" , "Windows-31J" , "Shift_JIS" 146 private String writerClass = HybsSystem.sys( "TABLE_WRITER_DEFAULT_CLASS" ); // 3.8.5.3 (2006/08/07) 147 private boolean fileAppend = false; // ファイルをAPPENDモードで出力するか 148 private boolean direct = false; 149 private boolean zip = false; 150 private String disposition = "attachment"; // 3.8.0.9 (2005/10/17) Content-Disposition 初期値変更 inline ?attachment 151 152 private transient DBTableModel table = null; 153 private String tableId = HybsSystem.TBL_MDL_KEY ; 154 private String sheetName = "Sheet1" ; // 3.5.4.2 (2003/12/15) 155 private String refSheetName = null ; // 3.5.4.3 (2004/01/05) 156 private String directory = null ; // 3.8.6.0 (2006/08/23) 157 158 private transient List<HybsEntry> param = null ; // 4.0.0 (2005/02/28) 159 160 private boolean useNumber = true; // 3.7.0.2 (2005/02/14) 161 // 4.0.0 (2005/12/31) 外部よりカラ??(カンマ区?)を指定できるようにする? 162 private String columns = null; 163 // 5.2.1.0 (2010/10/01) 書込処?コードリソースのラベル変換を行うかど? 164 private boolean useRenderer = HybsSystem.sysBool( "USE_TABLE_WRITER_RENDERER" ); // 5.2.1.0 (2010/10/01) 165 166 // 5.5.5.5 (2012/08/24) チェ?対? 167 private boolean selectedAll = true; // 5.5.5.5 (2012/08/24) 168 169 // 5.5.9.1 (2012/12/07) 事前にファイルを削除するかど?。互換性のため、false に設定?推奨は、true 170 private boolean beforeDelete = false; // 5.5.9.1 (2012/12/07) 事前にファイルを削除するかど?? 171 172 /** 173 * Taglibの開始タグが見つかったときに処??doStartTag() ?オーバ?ライドします? 174 * 175 * @og.rev 5.5.9.1 (2012/12/07) 事前にファイルを削除するかど???eforeDelete?フラグを追? 176 * @og.rev 5.7.7.2 (2014/06/20) caseKey,caseVal,caseNN,caseNull 属?を追? 177 * 178 * @return 後続????( EVAL_BODY_BUFFERED ) 179 */ 180 @Override 181 public int doStartTag() { 182 // 5.7.7.2 (2014/06/20) caseKey,caseVal,caseNN,caseNull 属?を追? 183 if( !useTag() ) { return SKIP_BODY ; } 184 185 directory = HybsSystem.url2dir( fileURL ); // 5.5.9.1 (2012/12/07) doEndTag() から移? 186 187 // 5.5.9.1 (2012/12/07) 事前にファイルを削除するかど? 188 if( beforeDelete && !fileAppend ) { 189 File delFile = null; 190 if( zip ) { delFile = new File( directory,filename + ".zip" ); } 191 else { delFile = new File( directory,filename ); } 192 if( delFile.exists() ) { delFile.delete(); } 193 } 194 195 return EVAL_BODY_BUFFERED ; // Body を評価する? extends BodyTagSupport ? 196 } 197 198 /** 199 * Taglibの終?グが見つかったときに処??doEndTag() ?オーバ?ライドします? 200 * 201 * @og.rev 2.1.3.1 (2002/12/13) ContentType を?x-msexcel から vnd.ms-excel に変更した? 202 * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応?release2() ?doEndTag()で呼ぶ? 203 * @og.rev 3.1.3.0 (2003/04/10) FILE_ENCODE から、エンコード情報を取得する? 204 * @og.rev 3.1.5.0 (2003/04/20) Content-Disposition を外部から?できるように変更? 205 * @og.rev 3.2.0.0 (2003/05/22) GZIPOutputStream を使用して?が?ZipOutputStream に変更? 206 * @og.rev 3.5.4.1 (2003/12/01) 引数の PrintWriter を?OutputStream に変更? 207 * @og.rev 3.5.4.3 (2004/01/05) 引数を? PrintWriter に戻す? 208 * @og.rev 3.6.0.2 (2004/10/04) EXCEL?レクト?力時にファイルエンドまで出力されな??合対? 209 * @og.rev 3.8.0.9 (2005/10/17) disposition属?を使用できるように変更します? 210 * @og.rev 3.8.6.0 (2006/08/23) フォル?な??合?、?階層??フォル?自動で作?します? 211 * @og.rev 4.3.4.3 (2008/12/22) Excel出力?判別方法を前方??に変更 212 * @og.rev 5.1.6.0 (2010/05/01) 画面帳票作?機?対? 213 * @og.rev 5.5.2.0 (2012/05/01) ZIP時にもencodeが有効にする 214 * @og.rev 5.5.5.5 (2012/08/24) selectedAllの処?追? 215 * @og.rev 5.5.9.1 (2012/12/07) beforeDeleteフラグの追?伴??ロジ?変更 216 * @og.rev 5.7.7.2 (2014/06/20) caseKey,caseVal,caseNN,caseNull 属?を追? 217 * 218 * @return 後続???? 219 */ 220 @Override 221 public int doEndTag() { 222 debugPrint(); // 4.0.0 (2005/02/28) 223 224 // 5.7.7.2 (2014/06/20) caseKey,caseVal,caseNN,caseNull 属?を追? 225 if( !useTag() ) { return EVAL_PAGE ; } 226 227 table = (DBTableModel)getObject( tableId ); 228 if( ! selectedAll ){ // 5.5.5.5 (2012/08/24) 229 table = getSelRowsTable( table ); 230 } 231 if( table != null && table.getRowCount() > 0 ) { 232 233 File dir = new File(directory); 234 if( ! dir.exists() && ! dir.mkdirs() ) { 235 String errMsg = "?レクトリの作?に失敗しました?" + directory + "]"; 236 throw new HybsSystemException( errMsg ); 237 } 238 239 PrintWriter pw = null; 240 ByteArrayOutputStream bt = null ; 241 try { 242 if( direct ) { 243 if( zip ) { 244 bt = new ByteArrayOutputStream(); 245 pw = new PrintWriter( bt ); 246 create( pw ) ; 247 pw.flush(); // 3.6.0.2 (2004/10/04) 248 ServletResponse response = pageContext.getResponse() ; 249 ((HttpServletResponse)response).addHeader( "Content-Encoding","gzip" ); 250 251 GZIPOutputStream gzip = new GZIPOutputStream(bt); 252 gzip.finish() ; 253 response.setContentLength( bt.size() ); 254 255 JspWriter out = pageContext.getOut(); 256 out.clear(); 257 out.print( bt ); 258 out.flush(); // 3.6.0.2 (2004/10/04) 259 } 260 else { 261 bt = new ByteArrayOutputStream(); 262 pw = new PrintWriter( bt ); 263 create( pw ) ; 264 pw.flush(); // 3.6.0.2 (2004/10/04) 265 ServletResponse response = pageContext.getResponse() ; 266 response.setContentType( "application/vnd.ms-excel; charset=" + encode ); 267 // response.setContentType( "application/x-msexcel; charset=" + encode ); 268 // response.setContentType( "text/comma-separated-values ; charset=" + encode ); 269 // ((HttpServletResponse)response).setHeader( "contentType","application/x-msexcel; charset=Shift_JIS" ); 270 // ((HttpServletResponse)response).setHeader( "Content-Disposition","attachment; filename=\"" + filename + "\"" ); 271 // ((HttpServletResponse)response).setHeader( "Content-Disposition","inline; filename=\"" + filename + "\"" ); 272 // 3.8.0.9 (2005/10/17) disposition属?を使用できるように変更します? 273 ((HttpServletResponse)response).setHeader( "Content-Disposition",disposition + "; filename=\"" + filename + "\"" ); 274 275 JspWriter out = pageContext.getOut(); 276 out.clear(); 277 out.print( bt ); 278 out.flush(); // 3.6.0.2 (2004/10/04) 279 } 280 } 281 else { 282 // 3.2.0.0 (2003/05/22) GZIPOutputStream を使用して?が?ZipOutputStream に変更? 283 if( zip ) { 284 bt = new ByteArrayOutputStream(); 285 if( writerClass.toUpperCase(Locale.JAPAN).startsWith("EXCEL") // 5.5.2.0(2012/05/01) 286 || writerClass.toUpperCase(Locale.JAPAN).startsWith("CALC") ) { 287 pw = new PrintWriter( bt ); 288 } 289 else{ 290 pw = getPrintWriter(bt); 291 } 292 create( pw ) ; 293 pw.flush(); // 3.6.0.2 (2004/10/04) 294 295 ZipOutputStream gzip = null; 296 try { 297 gzip = new ZipOutputStream( 298 new FileOutputStream( 299 StringUtil.urlAppend( directory,filename + ".zip" ))); 300 gzip.putNextEntry( new ZipEntry( filename ) ); 301 (bt).writeTo( gzip ); 302 gzip.finish() ; 303 } 304 finally { 305 Closer.ioClose( gzip ); // 4.0.0 (2006/01/31) close 処?の IOException を無? 306 } 307 } 308 else { 309 // if( "Excel".equalsIgnoreCase( writerClass ) ) { 310 if( writerClass.toUpperCase(Locale.JAPAN).startsWith("EXCEL") // 4.3.4.3 (2008/12/22) 311 || writerClass.toUpperCase(Locale.JAPAN).startsWith("CALC") ) { // 5.1.6.0 (2010/05/01) 312 create( null ); 313 } 314 else { 315 pw = getPrintWriter(); 316 create( pw ); 317 pw.flush(); // 3.6.0.2 (2004/10/04) 318 } 319 } 320 } 321 } 322 catch( IOException ex ) { 323 String errMsg = "??ブル出力時に、IOエラーが発生しました? + toString(); 324 throw new HybsSystemException( errMsg,ex ); // 3.5.5.4 (2004/04/15) 引数の並び?更 325 } 326 finally { 327 Closer.ioClose( pw ); // 4.0.0 (2006/01/31) close 処?の IOException を無? 328 Closer.ioClose( bt ); // 4.0.0 (2006/01/31) close 処?の IOException を無? 329 } 330 } 331 332 return EVAL_PAGE ; 333 } 334 335 /** 336 * タグリブオブジェクトをリリースします? 337 * キャ?ュされて再利用される?で、フィールド?初期設定を行います? 338 * 339 * @og.rev 2.0.0.4 (2002/09/27) カスタ?グの release() メソ?を?追? 340 * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応?release2() ?doEndTag()で呼ぶ? 341 * @og.rev 3.1.3.0 (2003/04/10) FILE_ENCODE から、エンコード情報を取得する? 342 * @og.rev 3.1.5.0 (2003/04/20) Content-Disposition を外部から?できるように変更? 343 * @og.rev 3.5.4.2 (2003/12/15) EXCELのシート名を指定できるように変更? 344 * @og.rev 3.5.4.3 (2004/01/05) EXCEL雛型参?ファイルのURL,filenameを追?ます? 345 * @og.rev 3.8.5.3 (2006/08/07) writerClass 属?の初期値をシス?リソースより取得します? 346 * @og.rev 3.8.5.3 (2006/08/07) fontName 属?を追?ます? 347 * @og.rev 3.8.5.3 (2006/08/07) fontPoint 属?を追?ます? 348 * @og.rev 3.8.6.0 (2006/08/23) directory 属?を追?ます? 349 * @og.rev 4.0.0.0 (2005/02/28) XMLファイルにセ?する、param を追?? 350 * @og.rev 5.2.1.0 (2010/10/01) 書込処?コードリソースのラベル変換を行うかど? useRenderer 属?追? 351 * @og.rev 5.5.5.5 (2012/08/24) selectedAll属?を追? 352 * @og.rev 5.5.9.1 (2012/12/07) 事前にファイルを削除するかど?。互換性のため、false に設定?推奨は、true 353 * 354 */ 355 @Override 356 protected void release2() { 357 super.release2(); 358 separator = TableWriter.TAB_SEPARATOR; // ?区??? 359 headerSequence = null; // ヘッ???の並び? 360 fileURL = BASE_URL; 361 filename = HybsSystem.sys( "FILE_FILENAME" ); // ファイル? 362 beforeDelete = false; // 5.5.9.1 (2012/12/07) 363 refFileURL = BASE_URL; // 3.5.4.3 (2004/01/05) 364 refFilename = null; // 3.5.4.3 (2004/01/05) 365 fontName = HybsSystem.sys( "TABLE_WRITER_DEFAULT_FONT_NAME" ); // 3.8.5.3 (2006/08/07) 366 fontPoint = HybsSystem.sys( "TABLE_WRITER_DEFAULT_FONT_POINTS" ); // 3.8.5.3 (2006/08/07) 367 encode = HybsSystem.sys( "FILE_ENCODE" ); // ファイルエンコー?ング "DEFAULT","JISAutoDetect" ,"JIS", "EUC_JP", "MS932", "SJIS" , "Windows-31J" , "Shift_JIS" 368 writerClass = HybsSystem.sys( "TABLE_WRITER_DEFAULT_CLASS" ); // 3.8.5.3 (2006/08/07) 369 fileAppend = false; // ファイルをAPPENDモードで出力するか 370 direct = false; 371 zip = false; 372 table = null; 373 tableId = HybsSystem.TBL_MDL_KEY ; 374 disposition = "attachment"; // 3.8.0.9 (2005/10/17) 初期値変更 inline ?attachment 375 sheetName = "Sheet1"; // 3.5.4.2 (2003/12/15) 376 refSheetName = null; // 3.5.4.2 (2003/12/15) 377 param = null ; // 4.0.0 (2005/01/31) 378 useNumber = true; // 3.7.0.2 (2005/02/14) 379 directory = null; // 3.8.6.0 (2006/08/23) 380 columns = null; // 4.0.0 (2005/12/31) 381 useRenderer = HybsSystem.sysBool( "USE_TABLE_WRITER_RENDERER" ); // 5.2.1.0 (2010/10/01) 382 selectedAll = true; // 5.5.5.5 (2012/08/24) 383 } 384 385 /** 386 * TableWriter の実オブジェクトを生?して?OutputStream に書き込みます? 387 * 388 * @og.rev 3.5.4.1 (2003/12/01) 引数の PrintWriter を?OutputStream に変更? 389 * @og.rev 3.5.4.2 (2003/12/15) lang 引数?table と同時に設定します? 390 * @og.rev 3.5.4.2 (2003/12/15) TableWriter のサブクラス名変更? 391 * @og.rev 3.5.4.3 (2004/01/05) EXCEL雛型参?ファイルを指定するよ?変更? 392 * @og.rev 3.5.4.3 (2004/01/05) 引数を? PrintWriter に戻す? 393 * @og.rev 3.5.4.5 (2004/01/23) ?エンコードを渡すよ?変更する? 394 * @og.rev 3.5.6.0 (2004/06/18) ?プラグイン関連付け設定を、シス?パラメータ に記述します? 395 * @og.rev 3.8.5.3 (2006/08/07) EXCEL時に fontName と fontPoint 属?をセ?します? 396 * @og.rev 4.0.0.0 (2005/01/31) キーの?を、TableWriter. から、TableWriter_ に変更します? 397 * @og.rev 4.0.0.0 (2005/12/31) 外部よりカラ??(カンマ区?)を指定できるようにする? 398 * @og.rev 5.2.1.0 (2010/10/01) 書込処?コードリソースのラベル変換を行うかど?設?useRenderer 属?追? 399 * 400 * @param out PrintWriterオブジェク? 401 */ 402 private void create( final PrintWriter out ) { 403 // 5.2.1.0 (2010/10/01) writerClass で Renderer系の場合?、useRendererフラグに変更する? 404 if( "ExcelRenderer".equalsIgnoreCase( writerClass ) ) { 405 writerClass = "Excel" ; 406 useRenderer = true; 407 } 408 else if( "Renderer".equalsIgnoreCase( writerClass ) ) { 409 writerClass = "Default" ; 410 useRenderer = true; 411 } 412 413 String className = HybsSystem.sys( "TableWriter_" + writerClass ) ; // 4.0.0 (2005/01/31) 414 TableWriter writer = (TableWriter)HybsSystem.newInstance( className ); // 3.5.5.3 (2004/04/09) 415 416 writer.setDBTableModel( table,getLanguage() ); 417 writer.setSeparator( separator ); 418 writer.setHeaderSequence( headerSequence ); 419 writer.setEncode( encode ); // 3.5.4.5 (2004/01/23) 420 writer.setAppend( fileAppend ); // 3.5.4.2 (2003/12/15) 421 if( param != null ) { writer.setParam( param ); } // 4.0.0 (2005/01/31) 422 writer.setUseNumber( useNumber ); // 3.7.0.2 (2005/02/14) 423 // if( columns == null ) { 424 // columns = (String)getSessionAttribute( HybsSystem.TBL_WRITER_CLMS ); 425 // removeSessionAttribute( HybsSystem.TBL_WRITER_CLMS ); 426 // } 427 writer.setColumns( columns ); // 4.0.0 (2005/12/31) 428 writer.setUseRenderer( useRenderer ); // 5.2.1.0 (2010/10/01) 429 if( writer.isExcel() ) { // 3.5.4.3 (2004/01/05) 430 writer.setSheetName( sheetName ); 431 writer.setFilename( StringUtil.urlAppend( directory , filename ) ); 432 if( refFileURL != null && refFilename != null ) { 433 writer.setRefFilename( StringUtil.urlAppend( HybsSystem.url2dir(refFileURL) , refFilename ) ); 434 } 435 writer.setRefSheetName( refSheetName ); 436 writer.setFontName( nval( fontName,null ) ); // 3.8.5.3 (2006/08/07) 437 if( fontPoint != null && fontPoint.length() > 0 ) { 438 writer.setFontPoint( Short.parseShort( fontPoint ) ); // 3.8.5.3 (2006/08/07) 439 } 440 writer.writeDBTable(); 441 } 442 else { 443 writer.writeDBTable( out ); 444 } 445 } 446 447 /** 448 * PrintWriter を取得します? 449 * 450 * ここでは、??ファイル出力を??した PrintWriter を作?します? 451 * 452 * @og.rev 2.2.0.0 (2002/12/17) 中国?国際化)対?エンコード?取得方法変更 453 * @og.rev 3.1.3.0 (2003/04/10) FILE_ENCODE から、エンコード情報を取得する? 454 * @og.rev 3.5.4.1 (2003/12/01) PrintWriter を?OutputStream に変更? 455 * @og.rev 3.5.5.9 (2004/06/07) FileUtil.getBufferedReader を使用 456 * @og.rev 3.7.1.1 (2005/05/23) フォル?な??合?、?階層??フォル?自動で作?します? 457 * @og.rev 3.8.0.0 (2005/06/07) FileUtil#getPrintWriter を利用? 458 * 459 * @return ファイル書き?し用のPrintWriterオブジェク? 460 */ 461 private PrintWriter getPrintWriter() { 462 if( filename == null ) { 463 String errMsg = "ファイル名がセ?されて?せん?; 464 throw new HybsSystemException( errMsg ); 465 } 466 467 // ※ 注?StringUtil.urlAppend を?込んで?意図が不?。?削除して?すが、注? 468 // 3.8.0.0 (2005/06/07) FileUtil#getPrintWriter を利用? 469 // out = FileUtil.getPrintWriter( StringUtil.urlAppend( directory,filename ),fileAppend,encode); 470 PrintWriter out = FileUtil.getPrintWriter( new File( directory,filename ),encode,fileAppend ); 471 472 return out ; 473 } 474 475 /** 476 * PrintWriter を取得します? 477 * 478 * 引数で?したOutputStreamを利用して出力します? 479 * 480 * @og.rev 5.5.2.0 (2012/05/01) 新規作? 481 * 482 * @param os OutputStreamオブジェク? 483 * 484 * @return ?したstreamに書き?すPrintWriter 485 */ 486 private PrintWriter getPrintWriter( final OutputStream os ) { 487 PrintWriter out = FileUtil.getPrintWriter( os,encode ); 488 489 return out ; 490 } 491 492 /** 493 * チェ?????ブルモ?を?構?します? 494 * 495 * @og.rev 5.5.5.5 (2012/08/24) 新規作? 496 * @og.rev 5.5.9.1 (2012/12/07) ?処?更 497 * 498 * @param oldTable コピ??ーブルモ? 499 * 500 * @return チェ?した?けで再構?した??ブルモ? 501 */ 502 private DBTableModel getSelRowsTable( final DBTableModel oldTable ) { 503 if( oldTable == null ) { return null; } // 5.5.9.1 (2012/12/07) 引数のDBTableModel?null の場合?処?? 504 505 DBTableModel newTable = oldTable.newModel(); 506 final int[] rowNo = getParameterRows(); 507 final int rowCount = rowNo.length ; 508 509 for( int i=0; i<rowCount; i++ ) { 510 newTable.addValues( oldTable.getValues(rowNo[i]), i ); 511 } 512 return newTable; 513 } 514 515 /** 516 * 【TAG?通常は使?せん)結果のDBTableModelを?sessionに登録するとき?キーを指定しま? 517 * (初期値:HybsSystem#TBL_MDL_KEY[={@og.value org.opengion.hayabusa.common.HybsSystem#TBL_MDL_KEY}])? 518 * 519 * @og.tag 520 * 検索結果より、DBTableModelオブジェクトを作?します?これを?下流?viewタグ等に 521 * 渡す?合に??常は、session を利用します?そ?場合?登録キーです? 522 * query タグを同時に実行して、結果を求める?合?同?モリに配置される為? 523 * こ? tableId 属?を利用して、メモリ空間を?ます? 524 * (初期値:HybsSystem#TBL_MDL_KEY[={@og.value org.opengion.hayabusa.common.HybsSystem#TBL_MDL_KEY}])? 525 * 526 * @param id sessionに登録する時? ID 527 */ 528 public void setTableId( final String id ) { 529 tableId = nval( getRequestParameter( id ), tableId ); 530 } 531 532 /** 533 * 【TAG】可変長ファイルを作?するとき??区??をセ?しま? 534 * (初期値:TableWriter#TAB_SEPARATOR[={@og.value TableWriter#TAB_SEPARATOR}])? 535 * 536 * @og.tag 可変長ファイルを作?するとき??区??をセ?します? 537 * (初期値:TableWriter#TAB_SEPARATOR[={@og.value TableWriter#TAB_SEPARATOR}])? 538 * 539 * @param separator ?区??? 540 * @see org.opengion.hayabusa.io.TableWriter#TAB_SEPARATOR 541 */ 542 public void setSeparator( final String separator ) { 543 this.separator = nval( getRequestParameter( separator ),this.separator ); 544 } 545 546 /** 547 * 【TAG】DBTableModelの出力?(LNSCD など)をセ?します? 548 * 549 * @og.tag 550 * Label,Name,Size,Class,Data の?ィールド?頭??アルファベットで 551 * 出力?を設定します? 552 * 553 * @param hs 出力? (LNSCD など) 554 */ 555 public void setHeaderSequence( final String hs ) { 556 String[] headers = getRequestParameterValues( hs ); 557 if( headers != null ) { 558 StringBuilder buf = new StringBuilder(); 559 for( int i=0; i<headers.length; i++ ) { 560 if( headers[i] != null ) { buf.append( headers[i] ); } 561 } 562 headerSequence = buf.toString(); 563 } 564 } 565 566 /** 567 * 【TAG】EXCEL雛型参?ファイルの?レクトリ名をセ?します? 568 * 569 * @og.tag 570 * こ?属?で?される?レクトリに、ファイルをセーブします? 571 * ?方法???常の fileURL 属?と同様に、?頭が?'/' (UNIX) また??文字目が? 572 * ":" (Windows)の場合?、指定?URLそ?ままの?レクトリに、そ?な??合?? 573 * シス?パラメータ の FILE_URL 属?で??フォル??下に、作?されます? 574 * fileURL = "{@USER.ID}" と?すると、FILE_URL 属?で??フォル??下に? 575 * さらに、各個人ID別のフォル?作?して、そこにセーブします? 576 * 577 * @og.rev 3.5.4.3 (2004/01/05) 新規作? 578 * @og.rev 4.0.0.0 (2005/01/31) StringUtil.urlAppend メソ?の利用 579 * @og.rev 4.0.0.0 (2007/11/20) ?された?レクトリ名??が"\"or"/"で終わって???合に?/"を付加する? 580 * 581 * @param url EXCEL雛型参?ファイルの?レクトリ? 582 */ 583 public void setRefFileURL( final String url ) { 584 String furl = nval( getRequestParameter( url ),null ); 585 if( furl != null ) { 586 char ch = furl.charAt( furl.length()-1 ); 587 if( ch != '/' && ch != '\\' ) { furl = furl + "/"; } 588 refFileURL = StringUtil.urlAppend( refFileURL,furl ); 589 } 590 } 591 592 /** 593 * 【TAG】ファイル保存??レクトリ名を?します? 594 * 595 * @og.tag 596 * こ?属?で?される?レクトリに、ファイルをセーブします? 597 * ?方法???常の fileURL 属?と同様に、?頭が?'/' (UNIX) また??文字目が? 598 * ":" (Windows)の場合?、指定?URLそ?ままの?レクトリに、そ?な??合?? 599 * シス?パラメータ の FILE_URL 属?で??フォル??下に、作?されます? 600 * fileURL = "{@USER.ID}" と?すると、FILE_URL 属?で??フォル??下に? 601 * さらに、各個人ID別のフォル?作?して、そこにセーブします? 602 * 603 * @og.rev 3.5.4.3 (2004/01/05) ?処?、makeFileURL に移動? 604 * @og.rev 4.0.0.0 (2005/01/31) StringUtil.urlAppend メソ?の利用 605 * @og.rev 4.0.0.0 (2007/11/20) ?された?レクトリ名??が"\"or"/"で終わって???合に?/"を付加する? 606 * 607 * @param url 保存??レクトリ? 608 */ 609 public void setFileURL( final String url ) { 610 String furl = nval( getRequestParameter( url ),null ); 611 if( furl != null ) { 612 char ch = furl.charAt( furl.length()-1 ); 613 if( ch != '/' && ch != '\\' ) { furl = furl + "/"; } 614 fileURL = StringUtil.urlAppend( fileURL,furl ); 615 } 616 } 617 618 /** 619 * 【TAG】ファイルを作?するとき?ファイル名をセ?しま? 620 * (初期値:FILE_ENCODE[={@og.value org.opengion.hayabusa.common.SystemData#FILE_ENCODE}])? 621 * 622 * @og.tag ファイルを作?するとき?ファイル名をセ?します? 623 * (初期値:シス?定数のFILE_ENCODE[={@og.value org.opengion.hayabusa.common.SystemData#FILE_ENCODE}])? 624 * 625 * @param filename ファイル? 626 * @see org.opengion.hayabusa.common.SystemData#FILE_ENCODE 627 */ 628 public void setFilename( final String filename ) { 629 this.filename = nval( getRequestParameter( filename ),this.filename ); 630 } 631 632 /** 633 * 【TAG】EXCEL雛型参?ファイル名をセ?します? 634 * 635 * @og.tag EXCEL雛型参?ファイル名をセ?します? 636 * 637 * @og.rev 3.5.4.3 (2004/01/05) 新規作? 638 * 639 * @param filename EXCEL雛型参?ファイル? 640 */ 641 public void setRefFilename( final String filename ) { 642 refFilename = nval( getRequestParameter( filename ),refFilename ); 643 } 644 645 /** 646 * 【TAG】ファイルを作?するとき?ファイルエンコー?ング名をセ?しま? 647 * (初期値:FILE_ENCODE[={@og.value org.opengion.hayabusa.common.SystemData#FILE_ENCODE}])? 648 * 649 * @og.tag 650 * "DEFAULT","JISAutoDetect" ,"JIS", "EUC_JP", "MS932", "SJIS" , "Windows-31J" , "Shift_JIS" 651 * (初期値:シス?定数のFILE_ENCODE[={@og.value org.opengion.hayabusa.common.SystemData#FILE_ENCODE}])? 652 * 653 * @og.rev 2.2.0.0 (2002/12/17) 中国?国際化)対?エンコード?取得方法変更 654 * @og.rev 3.1.3.0 (2003/04/10) FILE_ENCODE から、エンコード情報を取得する? 655 * 656 * @param enc ファイルエンコー?ング? 657 * @see <a href="http://www.iana.org/assignments/character-sets">IANA Charset Registry</a> 658 * @see org.opengion.hayabusa.common.SystemData#FILE_ENCODE 659 */ 660 public void setEncode( final String enc ) { 661 encode = nval( getRequestParameter( enc ),encode ); 662 } 663 664 /** 665 * 【TAG】実際に書き?すクラス名?略称({@og.doc03Link writerClass TableWriter_**** クラスの ****})を指定しま?初期値:Default)? 666 * 667 * @og.tag 668 * 実際に書き?すクラス?の略称)をセ?します? 669 * org.opengion.hayabusa.io.TableWriter インターフェースを継承したサブクラスです? 670 * これは、org.opengion.plugin.io 以下? TableWriter_**** クラスの **** を与えます? 671 * 属?クラス定義の {@link org.opengion.hayabusa.io.TableWriter TableWriter} を参照願います? 672 * {@og.doc03Link writerClass TableWriter_**** クラス} 673 * 674 * ExcelRenderer と、Renderer は、特別な名前で、useRenderer 属?に?true" をセ?するのと同じ効果があります? 675 * 実際は、ExcelRenderer ?Excel 、Renderer ?Default のクラスが呼ばれます? 676 * 677 * @param writerClass クラス?の略称) 678 * @see org.opengion.hayabusa.io.TableWriter TableWriterのサブクラス 679 */ 680 public void setWriterClass( final String writerClass ) { 681 this.writerClass = nval( getRequestParameter( writerClass ),this.writerClass ); 682 } 683 684 /** 685 * 【TAG】追?ードで書き込?ど?[true/false]を指定しま?初期値:false[新規モード])? 686 * 687 * @og.tag DBTableModelのファイルを?追?ードで書き込?ど?をセ?します? 688 * 689 * @param flag [true:追?ー?それ以?新規モード] 690 */ 691 public void setFileAppend( final String flag ) { 692 fileAppend = nval( getRequestParameter( flag ),fileAppend ); 693 } 694 695 /** 696 * 【?】結果をダイレクトにEXCEL起動するかど?[true/false]を指定しま?初期値:false[ファイル])? 697 * 698 * @og.tag 結果をダイレクトに EXCEL ファイルとして出力するかど?をセ?します? 699 * 700 * @param flag [true:?レク?それ以?ファイル] 701 * @deprecated 結果をダイレクトするとエンコード等でおかしな動きをする可能性がある? 702 */ 703 @Deprecated public void setDirect( final String flag ) { 704 direct = nval( getRequestParameter( flag ),direct ); 705 } 706 707 /** 708 * 【TAG】結果をファイルに出力するときに、ZIPで圧縮するかど?[true/false]を指定しま?初期値:false)? 709 * 710 * @og.tag 711 * 初期値は、圧縮しな?す? 712 * 713 * @param flag ZIPで圧縮する [true:圧縮する/それ以?しない] 714 */ 715 public void setZip( final String flag ) { 716 zip = nval( getRequestParameter( flag ),zip ); 717 } 718 719 /** 720 * 【TAG】Content-Disposition (inline:埋め込?attachment:?アログを起?を指定しま?初期値:attachment)? 721 * 722 * @og.tag 723 * Content-Disposition を指定することで、ブラウザにアプリケーション??タ? 724 * 埋め込???inline)、セー?オープンの?アログを起動する??attachment) 725 * ?します? 726 * こ?属?が有効なのは、direct="true" で、zip="false"(初期値)のとき?みです? 727 * 値は、inline 、attachment が指定できます? 728 * 初期値は、attachment です? 729 * 注意:動作検証しましたが?inline と attachment で動作に差が現れませんでした? 730 * 731 * @og.rev 3.1.5.0 (2003/04/20) Content-Disposition を外部から?できるように変更? 732 * @og.rev 3.8.0.9 (2005/10/17) Content-Disposition 初期値変更 inline ?attachment 733 * 734 * @param pos Content-Disposition [inline/attachment] 735 */ 736 public void setDisposition( final String pos ) { 737 disposition = nval( getRequestParameter( pos ),disposition ); 738 if( !"inline".equals( disposition ) && !"attachment".equals( disposition ) ) { 739 String errMsg = "disposition には、inline ?attachment 以外??できません? 740 + "disposition=[" + disposition + "]" ; 741 throw new HybsSystemException( errMsg ); 742 } 743 } 744 745 /** 746 * 【TAG】EXCELファイルを書き?すとき?シート名を設定します? 747 * 748 * @og.tag 749 * EXCELファイルを書き?す時に、シート名を指定します?これにより、?の形式? 750 * 異なるデータを?次書き?した?appendモードを併用)すること??シートを?して 751 * 新規にEXCELを作?することが可能になります? 752 * 初期値は、Sheet1 です? 753 * 754 * @og.rev 3.5.4.2 (2003/12/15) 新規追? 755 * 756 * @param sheet EXCELファイルのシート名 757 */ 758 public void setSheetName( final String sheet ) { 759 sheetName = nval( getRequestParameter( sheet ),sheetName ); 760 } 761 762 /** 763 * 【TAG】EXCEL雛型参?ファイルのシート名を設定します? 764 * 765 * @og.tag 766 * EXCELファイルを書き?す時に?型として参?するシート名を指定します? 767 * これにより、?の形式?異なるデータを?次書き?した?appendモードを併用)する 768 * こと??シートを?して新規にEXCELを作?する場合にフォー?設定する事が可能になります? 769 * 初期値は、null(第?ー? です? 770 * 771 * @og.rev 3.5.4.3 (2004/01/05) 新規追? 772 * 773 * @param sheet EXCEL雛型参?ファイルのシート名 774 */ 775 public void setRefSheetName( final String sheet ) { 776 refSheetName = nval( getRequestParameter( sheet ),refSheetName ); 777 } 778 779 /** 780 * 【TAG】EXCEL出力時の?ォルトフォント名を設定しま? 781 * (初期値:TABLE_WRITER_DEFAULT_FONT_NAME[={@og.value org.opengion.hayabusa.common.SystemData#TABLE_WRITER_DEFAULT_FONT_NAME}])? 782 * 783 * @og.tag 784 * これは、EXCEL追??として実?れて?す? 785 * 786 * EXCELファイルを書き?す時に、デフォルトフォント名を指定します? 787 * フォント名は、EXCELのフォント名をそのまま使用してください? 788 * ??、POI の org.apache.poi.hssf.usermodel.HSSFFont#setFontName( String ) 789 * に設定されます? 790 * (初期値:シス?定数のTABLE_WRITER_DEFAULT_FONT_NAME[={@og.value org.opengion.hayabusa.common.SystemData#TABLE_WRITER_DEFAULT_FONT_NAME}])? 791 * 792 * @og.rev 3.8.5.3 (2006/08/07) 新規追? 793 * 794 * @param name ?ォルトフォント名 795 * @see org.opengion.hayabusa.common.SystemData#TABLE_WRITER_DEFAULT_FONT_NAME 796 */ 797 public void setFontName( final String name ) { 798 fontName = nval( getRequestParameter( name ),fontName ); 799 } 800 801 /** 802 * 【TAG】EXCEL出力時の?ォルトフォント?イント数を設定します? 803 * 804 * @og.tag 805 * これは、EXCEL追??として実?れて?す? 806 * 807 * EXCELファイルを書き?す時に、デフォルト?イント数を指定します? 808 * ??、POI の org.apache.poi.hssf.usermodel.HSSFFont#setFontHeightInPoints( short ) 809 * に設定されます? 810 * 初期値は、シス?リソース の TABLE_WRITER_DEFAULT_FONT_POINTS です? 811 * 812 * @og.rev 3.8.5.3 (2006/08/07) 新規追? 813 * 814 * @param point ?ォルトフォント?イント数 815 */ 816 public void setFontPoint( final String point ) { 817 fontPoint = nval( getRequestParameter( point ),fontPoint ); 818 } 819 820 /** 821 * 【TAG】行番号??を?出力す?しない[true/false]を指定しま?初期値:true)? 822 * 823 * @og.tag 824 * 通常のフォーマットでは、各行?先?に行番号を?力します? 825 * これは?NAME 属?を使用する場合には、?出力する?があります? 826 * (#NAME 属?は、読み取り時には、??です?) 827 * こ?、?頭の行番号が不要な場?つまり?他?シス?への??タ出力? 828 * こ?シス?では?NAME 属?が?力されな?め?読み込みできません? 829 * こ?行番号を?力しな??できます? 830 * なお?EXCEL 出力には、この設定?適用されません?暫定対? 831 * 初期値は、true(出力す? です? 832 * 833 * @og.rev 3.7.0.2 (2005/02/14) 新規追? 834 * 835 * @param useNo 行番号??を指?[true:出力す?false:しない] 836 */ 837 public void setUseNumber( final String useNo ) { 838 useNumber = nval( getRequestParameter( useNo ),useNumber ); 839 } 840 841 /** 842 * 【TAG】書き込み先ファイルのカラ??を?外部(タグ)より?します? 843 * 844 * @og.tag 845 * こ??により、書き込?ラ?限定的に使用することが可能です? 846 * カラ?は、検索したDBTableModel上に含まれる名前で?する?があります? 847 * 別名で書き込みたい場合?、予めそ?名前で検索しておく?があります? 848 * 849 * @og.rev 4.0.0.0 (2005/12/31) 新規作? 850 * 851 * @param clms 書き込み先ファイルのカラ??(カンマ区??? 852 */ 853 public void setColumns( final String clms ) { 854 columns = nval( getRequestParameter( clms ),columns ); 855 } 856 857 /** 858 * 【TAG】書込処?コードリソースのラベル変換を行うかど?を指定しま? 859 * (初期値:USE_TABLE_WRITER_RENDERER[={@og.value org.opengion.hayabusa.common.SystemData#USE_TABLE_WRITER_RENDERER}])? 860 * 861 * @og.tag 862 * コードリソースをそのままの値で出力すると、数字や記号になり何が書かれて?の? 863 * 不?になります? 864 * これは、コードリソースをラベルに変換して出力するかど?を指定します? 865 * 当然、コード?ユニ?クですが、ラベルはユニ?クになるかど?保障はされて?せんので 866 * TableReader 系で読み込??合には、リスクが発生します? 867 * また?TableReader 系で読み込??合にも?ラベルからコードを求める?変換を行うように? 868 * setUseRenderer メソ?で?する?があります? 869 * 870 * 従来は、TableWriter 系に、TableWriter_Renderer 系のクラスを作って対応して?したが? 871 * こ?メソ?の属?値のフラグで、制御します? 872 * (初期値:シス?定数のUSE_TABLE_WRITER_RENDERER[={@og.value org.opengion.hayabusa.common.SystemData#USE_TABLE_WRITER_RENDERER}])? 873 * 874 * @og.rev 5.2.1.0 (2010/10/01) 新規作? 875 * 876 * @param flag コードリソースのラベル変換を行うかど? 877 * @see org.opengion.hayabusa.common.SystemData#USE_TABLE_WRITER_RENDERER 878 */ 879 public void setUseRenderer( final String flag ) { 880 useRenderer = nval( getRequestParameter( flag ),useRenderer ); 881 } 882 883 /** 884 * 【TAG】チェ?行?みを対象にするかを?しま?初期値:true)? 885 * 886 * @og.tag 887 * falseを指定する事で、前画面でチェ?した行?みを?力します? 888 * 初期値は全ての行を出?true)です? 889 * 出力されるファイルの行番号は?から振りなおされます? 890 * 891 * @og.rev 5.5.5.5 (2012/08/24) 新規作? 892 * 893 * @param flag 対象にするか指?[true:全件/false:対象のみ] 894 */ 895 public void setSelectedAll( final String flag ) { 896 selectedAll = nval( getRequestParameter( flag ),selectedAll ); // 5.5.9.1 (2012/12/07) バグ対? 897 } 898 899 /** 900 * 【TAG】事前にファイルを削除するかど?を指定しま?初期値:false)? 901 * 902 * @og.tag 903 * 出力?の DBTableModel が?存在しな??件の場合?過去に作?したファイル? 904 * そ?まま、残って?と、不要なトラブルのもととなる為、実行前に削除する? 905 * ど?を指定できます? 906 * なお?fileAppend="true"?追?ードで書き込???時には、データが0件で? 907 * 事前削除は行いません? 908 * 初期値は互換性のため削除しな?false)です? 909 * 910 * @og.rev 5.5.9.1 (2012/12/07) 新規作? 911 * 912 * @param flag 事前削除するかど? [true:削除する/false:削除しない] 913 */ 914 public void setBeforeDelete( final String flag ) { 915 beforeDelete = nval( getRequestParameter( flag ),beforeDelete ); 916 } 917 918 /** 919 * WriteTable オブジェクトに渡すパラメータオブジェクトをセ?します? 920 * 921 * @og.tag 922 * WriteTableParamTag クラスよりセ?されます? 923 * 924 * @og.rev 4.0.0.0 (2005/02/28) 新規追? 925 * 926 * @param entry HybsEntryオブジェク? 927 */ 928 protected void addParam( final HybsEntry entry ) { 929 if( param == null ) { param = new ArrayList<HybsEntry>(); } 930 param.add( entry ); 931 } 932 933 /** 934 * シリアライズ用のカスタ?リアライズ書き込みメソ? 935 * 936 * @og.rev 4.0.0.0 (2006/09/31) 新規追? 937 * @serialData ?のオブジェクト?、シリアライズされません? 938 * 939 * @param strm ObjectOutputStreamオブジェク? 940 * @throws IOException 入出力エラーが発生した?? 941 */ 942 private void writeObject( final ObjectOutputStream strm ) throws IOException { 943 strm.defaultWriteObject(); 944 } 945 946 /** 947 * シリアライズ用のカスタ?リアライズ読み込みメソ? 948 * 949 * ここでは、transient 宣?れた?変数の??初期化が?なフィールド?み設定します? 950 * 951 * @og.rev 4.0.0.0 (2006/09/31) 新規追? 952 * @serialData ?のオブジェクト?、シリアライズされません? 953 * 954 * @param strm ObjectInputStreamオブジェク? 955 * @see #release2() 956 * @throws IOException シリアライズに関する入出力エラーが発生した?? 957 * @throws ClassNotFoundException クラスを見つけることができなかった?? 958 */ 959 private void readObject( final ObjectInputStream strm ) throws IOException , ClassNotFoundException { 960 strm.defaultReadObject(); 961 } 962 963 /** 964 * こ?オブジェクト???表現を返します? 965 * 基本???目?使用します? 966 * 967 * @return こ?クラスの??表現 968 */ 969 @Override 970 public String toString() { 971 return org.opengion.fukurou.util.ToString.title( this.getClass().getName() ) 972 .println( "VERSION" ,VERSION ) 973 .println( "BASE_URL" ,BASE_URL ) 974 .println( "separator" ,separator ) 975 .println( "headerSequence" ,headerSequence ) 976 .println( "fileURL" ,fileURL ) 977 .println( "filename" ,filename ) 978 .println( "refFileURL" ,refFileURL ) 979 .println( "refFilename" ,refFilename ) 980 .println( "encode" ,encode ) 981 .println( "writerClass" ,writerClass ) 982 .println( "fileAppend" ,fileAppend ) 983 .println( "direct" ,direct ) 984 .println( "zip" ,zip ) 985 .println( "disposition" ,disposition ) 986 .println( "tableId" ,tableId ) 987 .println( "sheetName" ,sheetName ) 988 .println( "refSheetName" ,refSheetName ) 989 .println( "useNumber" ,useNumber ) 990 .println( "Other..." ,getAttributes().getAttribute() ) 991 .fixForm().toString() ; 992 } 993 }