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