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 }