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 static org.opengion.fukurou.util.StringUtil.nval;
019    
020    import java.io.IOException;
021    import java.io.ObjectInputStream;
022    import java.io.ObjectOutputStream;
023    
024    import org.opengion.fukurou.util.StringUtil;
025    import org.opengion.hayabusa.common.HybsSystem;
026    import org.opengion.hayabusa.db.DBTableModel;
027    import org.opengion.hayabusa.db.DBTableModelUtil;
028    import org.opengion.hayabusa.report2.QueueManager_DIRECT;
029    
030    /**
031     * 検索結果の DBTableModelオブジェクトをレポã?ト形式に変換するタグですã?
032     *
033     * ãƒ??タ(DBTableModel)と、コントローラ(DBTableReport クラス)を与えてã€?
034     * 外部からコントロールすることで、各種形式で ãƒ??タ(DBTableModel)を表示させることã�?
035     * 可能ですã?
036     * こã?タグを使用するには、OpenOffice.orgのモジュールがインストã?ルされててã�?‚‹å¿?¦�がありますã?
037     * またã?出力するために帳票シスãƒ?ƒ 関連のãƒ??タ設定やマスタ設定ã?ä¸??å¿?¦�ありませんã€?
038     *
039     * @og.formSample
040     * ●形式ï¼?lt;og:report fileURL="[?¥?¥?¥]" listId="[?¥?¥?¥]" ?¥?¥?¥ />
041     * ●body?šなã�?
042     *
043     * ●Tag定義??
044     *   <og:report2
045     *       fileURL            【TAG】雛型ã?HTMLファイルの保存してある ãƒ?‚£レクトリを指定しまã�?
046     *       listId           ○ã?TAG】帳票IDを指定しまã�?å¿??)ã€?
047     *       outFileURL         【TAG】å?力HTMLファイルの保存してあるãƒ?‚£レクトリを指定しまã�?
048     *       outFilename      ○ã?TAG】ファイルを作æ?するときã?出力ファイル名をセãƒ?ƒˆしまã�?å¿??)ã€?
049     *       headerKeys         【TAG】固定部の{@KEY} の KEY 部åˆ?‚’CSV形式でè¤?•°æŒ?®šしまã�?
050     *       headerVals         【TAG】固定部のKEY に対応するå?をCSV形式でè¤?•°æŒ?®šしまã�?
051     *       footerKeys         【TAG】繰り返し部の終äº?¾Œに表示する key 部åˆ?‚’CSV形式でè¤?•°æŒ?®šしまã�?
052     *       footerVals         【TAG】固定部のKEY に対応するå?をCSV形式でè¤?•°æŒ?®šしまã�?
053     *       pageEndCut         【TAG】ã?ãƒ?‚£ー部(繰り返し部)がなくなったときに、それ以降を表示するかどã�?�‹[true/false]を指定しまã�?初期値:true)
054     *       useLocalResource   【TAG】各シスãƒ?ƒ のリソース(ローカルリソース)を使用するか[true/false]を指定しまã�?初期値:true)
055     *       useSheetName       【TAG】PAGEBREAKカラãƒ??値をã?シート名として使ã�?�‹どã�?�‹[true/false]を指定しまã�?初期値:false)
056     *       fgrun              【TAG】å?力方法をæŒ?®šしまã�?初期値:P(PDF出åŠ?)
057     *       printerName        【TAG】ã?リンター名をæŒ?®šしまã�?
058     *       language           【TAG】タグå†?ƒ¨で使用するè¨?ªžコード[ja/en/zh/…]を指定しまã�?
059     *       scope              【TAG】キャãƒ?‚·ュする場合ã?スコープ[request/page/session/applicaton]を指定しまã�?初期値:session)
060     *       tableId            【TAGã€?通常使ã�?�¾せん)sessionからæ‰?¾—すã‚?DBTableModelオブジェクトã? ID
061     *       debug              【TAG】デバッグæƒ??をå?力するかどã�?�‹[true/false]を指定しまã�?初期値:false)
062     *   />
063     *
064     * ●使用ä¾?
065     *
066     * @og.group そã?他å?åŠ?
067     *
068     * @version  4.0
069     * @author   Hiroki Nakamura
070     * @since    JDK5.0,
071     */
072    public class ReportTableTag2 extends CommonTagSupport {
073            private static final String VERSION = "5.7.6.2 (2014/05/16)" ;
074    
075            private static final long serialVersionUID = 576220140516L ;
076    
077            private final String  BASE_URL  = HybsSystem.sys( "FILE_URL" );
078    
079            private String          fileURL                 = BASE_URL;     // 雛形ファイルURL
080            private String          listId                  = null;         // 帳票ID
081            private String          outFileURL              = BASE_URL;     // 出力ファイルURL
082            private String          outFilename             = null;         // 出力ファイルå�?
083            private String[]        headerKeys              = null;         // 固定部の{@KEY} の KEY 部åˆ?‚’æŒ?®šするã?カンマでè¤?•°æŒ?®šできるã€?
084            private String[]        headerVals              = null;         // 固定部のKEY に対応するå?を指定するã? {@KEY} に置き換わるã€?
085            private String[]        footerKeys              = null;         // 繰り返し部の終äº?¾Œに表示する key 部åˆ?‚’æŒ?®šするã?カンマでè¤?•°æŒ?®šできるã€?
086            private String[]        footerVals              = null;         // 繰り返し部の終äº?¾Œに表示する key に対する値を指定するã?
087            private boolean         pageEndCut              = true;         // ペã?ジエンドカãƒ?ƒˆをするか
088            private boolean         useLocalResource= true;         // ローカルリソースを使用するã�?
089            private boolean         useSheetName    = false;        // 5.7.6.2 (2014/05/16) PAGEBREAKカラãƒ??値をã?シート名として使ã�?�‹どã�?�‹ã€?
090    
091            private String          fgrun                   = "P";          // PDF出åŠ?
092            private String          printerName             = null;         // プリンタå�?
093    
094            private String          tableId                 = HybsSystem.TBL_MDL_KEY ;
095    
096            private transient DBTableModel body             = null;
097            private transient DBTableModel header   = null;
098            private transient DBTableModel footer   = null;
099    
100            /**
101             * Taglibの終äº?‚¿グが見つかったときに処ç�?�™ã‚?doEndTag() ã‚?オーバã?ライドしますã?
102             *
103             * @return      後続å?ç�??æŒ?¤º
104             */
105            @Override
106            public int doEndTag() {
107                    debugPrint();
108    
109                    final int rtnCode;
110    
111                    body = (DBTableModel)getObject( tableId );
112                    if( body == null || body.getRowCount() == 0 ) {
113                            rtnCode = SKIP_PAGE ; // ペã?ジの残りの処ç�?‚’行わなã�??
114                    }
115                    else {
116                            exec();
117                            rtnCode = EVAL_PAGE ;
118                    }
119    
120                    return rtnCode ;
121            }
122    
123            /**
124             * タグリブオブジェクトをリリースしますã?
125             * キャãƒ?‚·ュされて再利用されるã?で、フィールドã?初期設定を行いますã?
126             *
127             * @og.rev 5.7.6.2 (2014/05/16) PAGEBREAKカラãƒ??値をã?シート名として使ã�?�‹どã�?�‹ã€?
128             */
129            @Override
130            protected void release2() {
131                    super.release2();
132                    fileURL                 = BASE_URL;
133                    listId                  = null;
134                    outFileURL              = BASE_URL;
135                    outFilename             = null;
136                    headerKeys              = null;
137                    headerVals              = null;
138                    footerKeys              = null;
139                    footerVals              = null;
140                    pageEndCut              = true;
141                    useLocalResource= true;
142                    useSheetName    = false;        // 5.7.6.2 (2014/05/16) PAGEBREAKカラãƒ??値をã?シート名として使ã�?�‹どã�?�‹ã€?
143                    fgrun                   = "P";
144                    printerName             = null;
145                    tableId                 = HybsSystem.TBL_MDL_KEY ;
146                    body                    = null;
147                    header                  = null;
148                    footer                  = null;
149            }
150    
151            /**
152             * 帳票処ç�?‚’行いますã?
153             *
154             * @og.rev 4.3.3.4 (2008/11/01) ヘッãƒ??、フãƒ?‚¿ー値が設定されてã�?�ªã�??合にNullPointerExceptionがå?るバグを修正
155             * @og.rev 4.3.3.4 (2008/11/01) 雛形のパス及ã?、å?力å?のパスを実ディレクトリのパスに変換
156             * @og.rev 5.7.6.2 (2014/05/16) PAGEBREAKカラãƒ??値をã?シート名として使ã�?�‹どã�?�‹ã€?
157             *
158             */
159            private void exec()  {
160                    QueueManager_DIRECT manager = new QueueManager_DIRECT();
161                    manager.setListId( listId );
162                    manager.setLang( getLanguage() );
163                    manager.setOutputName( HybsSystem.url2dir( outFileURL ) + outFilename );
164                    manager.setOutputType( fgrun );
165                    manager.setTemplateName( HybsSystem.url2dir( fileURL ) + listId );
166                    manager.setPrinterName( printerName );
167                    manager.setFgcut( pageEndCut );
168                    manager.setFglocal( useLocalResource );
169                    manager.setUseSheetName( useSheetName );                // 5.7.6.2 (2014/05/16) PAGEBREAKカラãƒ??値をã?シート名として使ã�?�‹どã�?�‹ã€?
170    
171                    manager.setBody( body );
172    
173                    // 4.3.3.4 (2008/11/01)
174                    if( headerVals != null && headerVals.length > 0 ) {
175                            String[][] hvals = new String[headerVals.length][1];
176                            hvals[0] = headerVals;
177                            header = DBTableModelUtil.makeDBTable( headerKeys, hvals, getResource() );
178                            manager.setHeader( header );
179                    }
180    
181                    // 4.3.3.4 (2008/11/01)
182                    if( footerVals != null && footerVals.length > 0 ) {
183                            String[][] fvals = new String[footerVals.length][1];
184                            fvals[0] = footerVals;
185                            footer = DBTableModelUtil.makeDBTable( footerKeys, fvals, getResource() );
186                            manager.setFooter( footer );
187                    }
188    
189                    manager.create();
190                    manager.waitExec();
191            }
192    
193            /**
194             * 【TAG】雛型ã?HTMLファイルの保存してある ãƒ?‚£レクトリを指定しますã?
195             *
196             * @og.tag
197             * こã?属æ?でæŒ?®šされるãƒ?‚£レクトリのファイルを読み取りますã?
198             * æŒ?®š方法ã?ã€??常の fileURL 属æ?と同様に、å?頭がã?'/' (UNIX) またã?ã€?¼’文字目がã?
199             * ":" (Windows)の場合ã?、指定ã?URLそã?ままのãƒ?‚£レクトリに、そã�?�§なã�??合ã?ã€?
200             * シスãƒ?ƒ パラメータ の FILE_URL 属æ?でæŒ?®šã?フォルãƒ??下に、作æ?されますã?
201             * fileURL = "{@USER.ID}" とæŒ?®šすると、FILE_URL 属æ?でæŒ?®šã?フォルãƒ??下にã€?
202             * さらに、各個人ID別のフォルãƒ?‚’作æ?して、そこを操作しますã?
203             *
204             * @param       url 雛型のHTMLファイルのãƒ?‚£レクトリ
205             */
206            public void setFileURL( final String url ) {
207                    String furl = nval( getRequestParameter( url ),null );
208                    if( furl != null ) {
209                            char ch = furl.charAt( furl.length()-1 );
210                            if( ch != '/' && ch != '\\' ) { furl = furl + "/"; }
211                            fileURL = StringUtil.urlAppend( fileURL,furl );
212                    }
213            }
214    
215            /**
216             * 【TAG】帳票IDを指定しますã?
217             *
218             * @og.tag
219             * 帳票IDを指定しますã?
220             *
221             * @param       listId  帳票ID
222             */
223            public void setListId( final String listId ) {
224                    this.listId = nval( getRequestParameter( listId ), this.listId );
225            }
226    
227            /**
228             * 【TAG】å?力HTMLファイルの保存してあるãƒ?‚£レクトリを指定しますã?
229             *
230             * @og.tag
231             * こã?属æ?でæŒ?®šされるãƒ?‚£レクトリにファイルをå?力しますã?
232             * æŒ?®š方法ã?ã€??常の fileURL 属æ?と同様に、å?頭がã?'/' (UNIX) またã?ã€?¼’文字目がã?
233             * ":" (Windows)の場合ã?、指定ã?URLそã?ままのãƒ?‚£レクトリに、そã�?�§なã�??合ã?ã€?
234             * シスãƒ?ƒ パラメータ の FILE_URL 属æ?でæŒ?®šã?フォルãƒ??下に、作æ?されますã?
235             * fileURL = "{@USER.ID}" とæŒ?®šすると、FILE_URL 属æ?でæŒ?®šã?フォルãƒ??下にã€?
236             * さらに、各個人ID別のフォルãƒ?‚’作æ?して、そこに出力しますã?
237             *
238             * @param       url 出力HTMLファイルのãƒ?‚£レクトリ
239             */
240            public void setOutFileURL( final String url ) {
241                    String furl = nval( getRequestParameter( url ),null );
242                    if( furl != null ) {
243                            char ch = furl.charAt( furl.length()-1 );
244                            if( ch != '/' && ch != '\\' ) { furl = furl + "/"; }
245                            outFileURL = StringUtil.urlAppend( outFileURL,furl );
246                    }
247            }
248    
249            /**
250             * 【TAG】ファイルを作æ?するときã?出力ファイル名をセãƒ?ƒˆしますã?
251             *
252             * @og.tag
253             * ファイルを作æ?するときã?出力ファイル名をセãƒ?ƒˆしますã?
254             * 紙に印字するå?合などファイルに出力しなã�??合ã?不要ですã?
255             *
256             * @param   filename 出力ファイルå�?
257             */
258            public void setOutFilename( final String filename ) {
259                    this.outFilename = nval( getRequestParameter( filename ),this.outFilename );
260            }
261    
262            /**
263             * 【TAG】固定部の{@KEY} の KEY 部åˆ?‚’CSV形式でè¤?•°æŒ?®šしますã?
264             *
265             * @og.tag
266             * カンマでè¤?•°æŒ?®šできますã?
267             * åˆ?§£方法ã?、CSV変数をå?にåˆ?§£してから、getRequestParameter で値を取得しますã?
268             * こうしなã�?�¨ãƒ??タ自身にカンマを持ってã�?‚‹場合にåˆ?§£をミスる為ですã?
269             *
270             * @param   hKeys 固定部の key
271             */
272            public void setHeaderKeys( final String hKeys ) {
273                    headerKeys = getCSVParameter( hKeys );
274            }
275    
276            /**
277             * 【TAG】固定部のKEY に対応するå?をCSV形式でè¤?•°æŒ?®šしますã?
278             *
279             * @og.tag
280             * カンマでè¤?•°æŒ?®šで、リクエスト情報でも設定できますã?
281             * åˆ?§£方法ã?、CSV変数をå?にåˆ?§£してから、getRequestParameter で値を取得しますã?
282             * こうしなã�?�¨ãƒ??タ自身にカンマを持ってã�?‚‹場合にåˆ?§£をミスる為ですã?
283             *
284             * @param   hVals 固定部の値
285             */
286            public void setHeaderVals( final String hVals ) {
287                    headerVals = getCSVParameter( hVals );
288            }
289    
290            /**
291             * 【TAG】繰り返し部の終äº?¾Œに表示する key 部åˆ?‚’CSV形式でè¤?•°æŒ?®šしますã?
292             *
293             * @og.tag
294             * カンマでè¤?•°æŒ?®šできますã?
295             * åˆ?§£方法ã?、CSV変数をå?にåˆ?§£してから、getRequestParameter で値を取得しますã?
296             * こうしなã�?�¨ãƒ??タ自身にカンマを持ってã�?‚‹場合にåˆ?§£をミスる為ですã?
297             *
298             * @param   ftKeys 繰り返し部の終äº?¾Œに表示する key
299             */
300            public void setFooterKeys( final String ftKeys ) {
301                    footerKeys = getCSVParameter( ftKeys );
302            }
303    
304            /**
305             * 【TAG】固定部のKEY に対応するå?をCSV形式でè¤?•°æŒ?®šしますã?
306             *
307             * @og.tag
308             * カンマでè¤?•°æŒ?®šで、リクエスト情報でも設定できますã?
309             * åˆ?§£方法ã?、CSV変数をå?にåˆ?§£してから、getRequestParameter で値を取得しますã?
310             * こうしなã�?�¨ãƒ??タ自身にカンマを持ってã�?‚‹場合にåˆ?§£をミスる為ですã?
311             *
312             * @param   ftVals 繰り返し部の終äº?¾Œに表示する値
313             */
314            public void setFooterVals( final String ftVals ) {
315                    footerVals = getCSVParameter( ftVals );
316            }
317    
318            /**
319             * 【TAG】ã?ãƒ?‚£ー部(繰り返し部)がなくなったときに、それ以降を表示するかどã�?�‹[true/false]を指定しまã�?初期値:true)ã€?
320             *
321             * @og.tag
322             * true では、それ以降を出力しませんã€?
323             * 初期値は "true" (なくなった時点で、å?力しなã�??)ですã?
324             *
325             * @param   peCut 繰り返し部の終äº?¾Œに継続å?ç�?�™るかどã�?�‹ (true:処ç�?�—なã�?false:処ç�?�™ã‚?
326             */
327            public void setPageEndCut( final String peCut ) {
328                    pageEndCut = nval( getRequestParameter( peCut ),pageEndCut );
329            }
330    
331            /**
332             * 【TAG】各シスãƒ?ƒ のリソース(ローカルリソース)を使用するか[true/false]を指定しまã�?初期値:true)ã€?
333             *
334             * @og.tag
335             * true の場合ã?å�?‚·スãƒ?ƒ に登録されたリソースæƒ??を使用して帳票ãƒ??タが変換されますã?
336             * false の場合ã?、帳票ãƒ??モンが起動してã�?‚‹シスãƒ?ƒ (通常は'GE')のリソースが適用されますã?
337             * 初期値は "true" (ローカルリソースを使用する)ですã?
338             *
339             * @param   fgl  ローカルリソースを使用するã�?true:処ç�?�—なã�?false:処ç�?�™ã‚?
340             */
341            public void setUseLocalResource( final String fgl ) {
342                    useLocalResource = nval( getRequestParameter( fgl ),useLocalResource );
343            }
344    
345            /**
346             * 【TAG】PAGEBREAKカラãƒ??値をã?シート名として使ã�?�‹どã�?�‹をセãƒ?ƒˆしまã�?初期値:false)ã€?
347             *
348             * @og.tag
349             * PAGEBREAK で、シートチェンジを行う場合ã?シート名も指定したい場合がありますã?
350             * そã?場合ã?こã?、useSheetName="true" とすることで、PAGEBREAKカラãƒ??値をã?シート名として
351             * 使用しますã?
352             * useSheetName="false" の場合ã?ã€?Page"+ペã?ジ番号+"_Row"+現在行番号 がシート名になりますã?
353             *
354             * PAGEBREAK は、FIRSTシート雛形にも適用されますã?
355             * ちなみに、FIRSTシート雛形は、特殊で、useSheetName="false" の場合でもã?
356             * FIRST_**** などと記述した場合ã?ã€?*** æ–?­—å?をシート名に使用しますã?
357             * FIRST ã�?�‘の場合ã?、従来と同じシート名になりますã?
358             * 初期値は、互換性をè?慮しã?false:シート名として使用しなã�?ですã?
359             *
360             * @og.rev 5.7.6.2 (2014/05/16) 新規追åŠ?
361             *
362             * @param useSName PAGEBREAKカラãƒ??シート名使用可否[true:使用/false:使用しない]
363             */
364            public void setUseSheetName( final String useSName ) {
365                    useSheetName = nval( getRequestParameter( useSName ),useSheetName );
366            }
367    
368            /**
369             * 【TAG】å?力方法をæŒ?®šしまã�?初期値:P(PDF出åŠ?)ã€?
370             *
371             * @og.tag
372             * 出力方法ã?コードã?、FGRUNのコードリソースと同じもã?が指定できますã?
373             * 初期値は "P" (PDF出åŠ?ですã?
374             *
375             * @param   flg 出力方æ³?
376             */
377            public void setFgrun( final String flg ) {
378                    fgrun= nval( getRequestParameter( flg ),fgrun );
379            }
380    
381            /**
382             * 【TAG】ã?リンター名をæŒ?®šしますã?
383             *
384             * @og.tag
385             * プリンター名をæŒ?®šしますã?こã?プリンター名ã?帳票サーバã?上でのプリンタ名ですã?
386             * ファイル出力等ã?紙に印刷しなã�??合ã?不要ですã?
387             *
388             * @param   ptnm プリンターå�?
389             */
390            public void setPrinterName( final String ptnm ) {
391                    printerName = nval( getRequestParameter( ptnm ),printerName );
392            }
393    
394            /**
395             * 【TAGã€?通常は使ã�?�¾せん)結果のDBTableModelをã?sessionに登録するときã?キーを指定しまã�?
396             *              (初期値:HybsSystem#TBL_MDL_KEY[={@og.value org.opengion.hayabusa.common.HybsSystem#TBL_MDL_KEY}])ã€?
397             *
398             * @og.tag
399             * 検索結果より、DBTableModelオブジェクトを作æ?しますã?これをã?下流ã?viewタグ等に
400             * 渡すå?合にã€??常は、session を利用しますã?そã?場合ã?登録キーですã?
401             * query タグを同時に実行して、結果を求めるå?合ã?同ä¸?ƒ¡モリに配置される為ã€?
402             * こã? tableId 属æ?を利用して、メモリ空間をåˆ?�‘ますã?
403             *              (初期値:HybsSystem#TBL_MDL_KEY[={@og.value org.opengion.hayabusa.common.HybsSystem#TBL_MDL_KEY}])ã€?
404             *
405             * @param       id sessionに登録する時ã? ID
406             */
407            public void setTableId( final String id ) {
408                    tableId = nval( getRequestParameter( id ), tableId );
409            }
410    
411            /**
412             * タグの名称をã?返しますã?
413             * 自åˆ??身のクラス名よりã?自動的に取り出せなã�?�Ÿめã?こã?メソãƒ?ƒ‰をオーバã?ライドしますã?
414             *
415             * @og.rev 4.0.0.0 (2005/01/31) 新規追åŠ?
416             *
417             * @return  タグの名称
418             */
419            @Override
420            protected String getTagName() {
421                    return "report2" ;
422            }
423    
424            /**
425             * シリアライズ用のカスタãƒ?‚·リアライズ書き込みメソãƒ?ƒ‰
426             *
427             * @og.rev 4.0.0.0 (2006/09/31) 新規追åŠ?
428             * @serialData ä¸?ƒ¨のオブジェクトã?、シリアライズされませんã€?
429             *
430             * @param       strm    ObjectOutputStreamオブジェクãƒ?
431             * @throws IOException  入出力エラーが発生したå?å�?
432             */
433            private void writeObject( final ObjectOutputStream strm ) throws IOException {
434                    strm.defaultWriteObject();
435            }
436    
437            /**
438             * シリアライズ用のカスタãƒ?‚·リアライズ読み込みメソãƒ?ƒ‰
439             *
440             * ここでは、transient 宣è¨?�•れたå†?ƒ¨変数のå†??初期化がå¿?¦�なフィールドã?み設定しますã?
441             *
442             * @og.rev 4.0.0.0 (2006/09/31) 新規追åŠ?
443             * @serialData ä¸?ƒ¨のオブジェクトã?、シリアライズされませんã€?
444             *
445             * @param       strm    ObjectInputStreamオブジェクãƒ?
446             * @see #release2()
447             * @throws IOException  シリアライズに関する入出力エラーが発生したå?å�?
448             * @throws ClassNotFoundException       クラスを見つけることができなかったå?å�?
449             */
450            private void readObject( final ObjectInputStream strm ) throws IOException , ClassNotFoundException {
451                    strm.defaultReadObject();
452            }
453    
454            /**
455             * こã?オブジェクトã?æ–?­—å?表現を返しますã?
456             * 基本çš?�«ãƒ?ƒ�ãƒ?‚°目çš?�«使用しますã?
457             *
458             * @return こã?クラスのæ–?­—å?表現
459             */
460            @Override
461            public String toString() {
462                    return org.opengion.fukurou.util.ToString.title( this.getClass().getName() )
463                                    .println( "VERSION"             ,VERSION        )
464                                    .println( "fileURL"                     ,fileURL                        )
465                                    .println( "listId"                      ,listId                         )
466                                    .println( "outFileURL"          ,outFileURL                     )
467                                    .println( "outFilename"         ,outFilename            )
468                                    .println( "headerKeys"          ,headerKeys                     )
469                                    .println( "headerVals"          ,headerVals                     )
470                                    .println( "footerKeys"          ,footerKeys                     )
471                                    .println( "footerVals"          ,footerVals                     )
472                                    .println( "pageEndCut"          ,pageEndCut                     )
473                                    .println( "useLocalResource",useLocalResource   )
474                                    .println( "fgrun"                       ,fgrun                          )
475                                    .println( "printerName"         ,printerName            )
476                                    .println( "tableId"                     ,tableId                        )
477                                    .println( "BASE_URL"            ,BASE_URL                       )
478                                    .println( "Other..."    ,getAttributes().getAttribute() )
479                                    .fixForm().toString() ;
480            }
481    }