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.report2;
017    
018    import java.io.File;
019    
020    import org.opengion.hayabusa.db.DBTableModel;
021    
022    /**
023     * 帳票処ç�?¦�求を管ç�?�™るキューオブジェクトですã?
024     * こã?オブジェクトでは、帳票の定義及ã?ãƒ??タと、å?ç�?¸­に発生したエラーメãƒ?‚»ージを管ç�?�—ますã?
025     * またã?こã?キューを生成したオブジェクトもこã?オブジェクトにセãƒ?ƒˆされますã?
026     *
027     * @og.group 帳票シスãƒ?ƒ 
028     *
029     * @version  4.0
030     * @author   Hiroki.Nakamura
031     * @since    JDK1.6
032     */
033    public class ExecQueue {
034    
035            /** 実行方æ³?{@value} */
036            protected static final String OUT_ODS_ONLY              = "1";
037            /** 実行方æ³?{@value} */
038            protected static final String OUT_PRINT_ONLY    = "2";
039            /** 実行方æ³?{@value} */
040            protected static final String OUT_ODS_PRINT             = "3";
041            /** 実行方æ³?{@value} */
042            protected static final String OUT_ODS_PDF               = "P";
043            /** 実行方æ³?{@value} */
044            protected static final String OUT_ODS_PRINT_PDF = "Q";
045            /** 実行方æ³?{@value} */
046            protected static final String OUT_ODS_EXCEL             = "E";
047            /** 実行方æ³?{@value} */
048            protected static final String OUT_ODS_ODS               = "S"; // 4.3.3.4 (2008/11/01) 追åŠ?
049            /** 実行方æ³?{@value} */
050            protected static final String IN_INPUT_ONLY             = "5";
051            /** 実行方æ³?{@value} */
052            protected static final String IN_EXEC_ONLY              = "6";
053            /** 実行方æ³?{@value} */
054            protected static final String IN_INPUT_EXEC             = "7";
055            /** 実行方æ³?{@value} */
056            protected static final String RFID_PRINT                = "A";
057            /** 実行方æ³?{@value} */
058            protected static final String RFID_ALLPRINT             = "B";
059            /** 実行方æ³?{@value} */
060            protected static final String RFID_ALLERASE             = "C";
061            /** 実行方æ³?{@value} */
062            protected static final String RFID_SEQERASE             = "D";
063    
064            /** æœ?¤§シート数 {@value} */
065            protected static final int MAX_SHEETS_PER_FILE  = 256; // 5.1.2.0 (2010/01/01)
066    
067            private String          ykno            = null;
068            private String          systemId        = null;
069            private DBTableModel body               = null;
070            private DBTableModel header             = null;
071            private DBTableModel footer             = null;
072    //      private String          bsql            = null; // 5.1.2.0 (2010/01/01)
073    //      private String          hsql            = null; // 5.1.2.0 (2010/01/01)
074    //      private String          fsql            = null; // 5.1.2.0 (2010/01/01)
075            private String          listId          = null;
076            private String          pdfPasswd       = null;
077            private String          lang            = null;
078            private String          threadId        = null;
079            private String          templateName = null;
080            private String          outputType      = null;
081            private String          printerName     = null;
082            private String          outputName      = null;
083            private boolean         fglocal         = false;
084    //      private boolean         fgdirect        = false;
085            private boolean         fgcut           = false;
086            private QueueManager manager    = null;
087            private String          prgdir          = null;         // 4.3.3.0 (2008/10/01) 板金RFID対応ã?
088            private String          prgfile         = null;         // 4.3.3.0 (2008/10/01)
089            private String          prtid           = null;         // 4.3.3.0 (2008/10/01)
090    
091            private int                     pageCnt         = 0;            // 5.1.2.0 (2010/01/01) 処ç�?�—たã?ージ数
092            private int                     rowCnt          = 0;            // 5.1.2.0 (2010/01/01) 処ç�?�—た行数
093    //      private boolean         isEnd           = false;        // 5.1.2.0 (2010/01/01) 全ãƒ??タがå?ç�?�•れたã�?
094            private boolean         isDataEnd       = false;        // 5.1.2.0 (2010/01/01) 全ãƒ??タがå?ç�?�•れたã�?(メソãƒ?ƒ‰名と同じ変数名変更)
095    
096            private final StringBuilder errMsg = new StringBuilder();
097    
098            /**
099             * 要æ±?Oをセãƒ?ƒˆしますã?
100             *
101             * @param ykno 要æ±?O
102             */
103            public void setYkno( final String ykno ) {
104                    this.ykno = ykno;
105            }
106    
107            /**
108             * 要æ±?Oを取得しますã?
109             *
110             * @return      要æ±?O
111             */
112            public String getYkno() {
113                    return ykno;
114            }
115    
116            /**
117             * シスãƒ?ƒ IDをセãƒ?ƒˆしますã?
118             *
119             * @param systemId シスãƒ?ƒ ID
120             */
121            public void setSystemId( final String systemId ) {
122                    this.systemId = systemId;
123            }
124    
125            /**
126             * シスãƒ?ƒ IDを取得しますã?
127             *
128             * @return  Stringシスãƒ?ƒ ID
129             */
130            public String getSystemId() {
131                    return systemId;
132            }
133    
134            /**
135             * ボディー部åˆ??DBTableModelをセãƒ?ƒˆしますã?
136             *
137             * @param body DBTableModelオブジェクãƒ?
138             */
139            public void setBody( final DBTableModel body ) {
140                    this.body = body;
141            }
142    
143            /**
144             * ボディー部åˆ??DBTableModelを取得しますã?
145             *
146             * @return      ボディー部åˆ??DBTableModelオブジェクãƒ?
147             */
148            public DBTableModel getBody() {
149                    return body;
150            }
151    
152            /**
153             * ヘッãƒ??部åˆ??DBTableModelをセãƒ?ƒˆしますã?
154             *
155             * @param header DBTableModelオブジェクãƒ?
156             */
157            public void setHeader( final DBTableModel header ) {
158                    this.header = header;
159            }
160    
161            /**
162             * ヘッãƒ??部åˆ??DBTableModelを取得しますã?
163             *
164             * @return      ヘッãƒ??部åˆ??DBTableModelオブジェクãƒ?
165             */
166            public DBTableModel getHeader() {
167                    return header;
168            }
169    
170            /**
171             * フッター部åˆ??DBTableModelをセãƒ?ƒˆしますã?
172             *
173             * @param footer DBTableModelオブジェクãƒ?
174             */
175            public void setFooter( final DBTableModel footer ) {
176                    this.footer = footer;
177            }
178    
179            /**
180             * フッター部åˆ??DBTableModelを取得しますã?
181             *
182             * @return      フッター部åˆ??DBTableModelオブジェクãƒ?
183             */
184            public DBTableModel getFooter() {
185                    return footer;
186            }
187    
188            /**
189             * ボディー部åˆ??DBTableModelを作æ?するためのSQLæ–?‚’セãƒ?ƒˆしますã?
190             *
191             * @og.rev 5.1.2.0 (2010/01/01) å»?­¢(クラスå†?ƒ¨で直接åˆ?‰²)
192             *
193             * @see QueueManager_DB.DBTableModelCreator
194             * @param bsql
195             */
196    //      public void setBsql( final String bsql ) {
197    //              this.bsql = bsql;
198    //      }
199    
200            /**
201             * ボディー部åˆ??DBTableModelを作æ?するためのSQLæ–?‚’取得しますã?
202             *
203             * @og.rev 5.1.2.0 (2010/01/01) å»?­¢(クラスå†?ƒ¨で直接åˆ?‰²)
204             *
205             * @see QueueManager_DB.DBTableModelCreators
206             *
207             * @return ボディーSQL
208             */
209    //      public String getBsql() {
210    //              return bsql;
211    //      }
212    
213            /**
214             * ヘッãƒ??部åˆ??DBTableModelを作æ?するためのSQLæ–?‚’セãƒ?ƒˆしますã?
215             *
216             * @og.rev 5.1.2.0 (2010/01/01) å»?­¢(クラスå†?ƒ¨で直接åˆ?‰²)
217             *
218             * @see QueueManager_DB.DBTableModelCreator
219             * @param hsql
220             */
221    //      public void setHsql( final String hsql ) {
222    //              this.hsql = hsql;
223    //      }
224    
225            /**
226             * ヘッãƒ??部åˆ??DBTableModelを作æ?するためのSQLæ–?‚’取得しますã?
227             *
228             * @og.rev 5.1.2.0 (2010/01/01) å»?­¢(クラスå†?ƒ¨で直接åˆ?‰²)
229             *
230             * @see QueueManager_DB.DBTableModelCreator
231             *
232             * @return ヘッãƒ??SQL
233             */
234    //      public String getHsql() {
235    //              return hsql;
236    //      }
237    
238            /**
239             * フッター部åˆ??DBTableModelを作æ?するためのSQLæ–?‚’セãƒ?ƒˆしますã?
240             *
241             * @og.rev 5.1.2.0 (2010/01/01) å»?­¢(クラスå†?ƒ¨で直接åˆ?‰²)
242             *
243             * @see QueueManager_DB.DBTableModelCreator
244             * @param fsql
245             */
246    //      public void setFsql( final String fsql ) {
247    //              this.fsql = fsql;
248    //      }
249    
250            /**
251             * フッター部åˆ??DBTableModelを作æ?するためのSQLæ–?‚’取得しますã?
252             *
253             * @og.rev 5.1.2.0 (2010/01/01) å»?­¢(クラスå†?ƒ¨で直接åˆ?‰²)
254             *
255             * @see QueueManager_DB.DBTableModelCreator
256             *
257             * @return フッターSQL
258             */
259    //      public String getFsql() {
260    //              return fsql;
261    //      }
262    
263            /**
264             * 帳票IDをセãƒ?ƒˆしますã?
265             *
266             * @param listId 帳票ID
267             */
268            public void setListId( final String listId ) {
269                    this.listId = listId;
270            }
271    
272            /**
273             * 帳票IDを取得しますã?
274             *
275             * @return 帳票ID
276             */
277            public String getListId() {
278                    return listId;
279            }
280    
281            /**
282             * PDFパスワードをセãƒ?ƒˆしますã?
283             *
284             * @param pdfPasswd PDFパスワーãƒ?
285             */
286            public void setPdfPasswd( final String pdfPasswd ) {
287                    this.pdfPasswd = pdfPasswd;
288            }
289    
290            /**
291             * PDFパスワードを取得しますã?
292             *
293             * @return PDFパスワーãƒ?
294             */
295            public String getPdfPasswd() {
296                    return pdfPasswd;
297            }
298    
299            /**
300             * è¨?ªžをセãƒ?ƒˆしますã?
301             *
302             * @param lang è¨?ª?
303             */
304            public void setLang( final String lang ) {
305                    this.lang = lang;
306            }
307    
308            /**
309             * è¨?ªžを取得しますã?
310             *
311             * @return è¨?ª?
312             */
313            public String getLang() {
314                    return lang;
315            }
316    
317            /**
318             * 雛形ファイル名をセãƒ?ƒˆしますã?
319             *
320             * @param templateName 雛形ファイルå�?
321             */
322            public void setTemplateName( final String templateName ) {
323                    this.templateName = templateName;
324            }
325    
326            /**
327             * 雛形ファイル名を取得しますã?
328             *
329             * @return 帳票雛形ファイルå�?
330             */
331            public String getTemplateName() {
332                    return templateName;
333            }
334    
335            /**
336             * 実行方法をセãƒ?ƒˆしますã?
337             *
338             * @param outputType 実行方æ³?
339             */
340            public void setOutputType( final String outputType ) {
341                    this.outputType = outputType;
342            }
343    
344            /**
345             * 出力タイプを取得しますã?
346             *
347             * @return 出力タイãƒ?
348             */
349            public String getOutputType() {
350                    return outputType;
351            }
352    
353            /**
354             * プリンター名をセãƒ?ƒˆしますã?
355             *
356             * @param  printerName プリンターå�?
357             */
358            public void setPrinterName( final String printerName ) {
359                    this.printerName = printerName;
360            }
361    
362            /**
363             * プリンター名を取得しますã?
364             *
365             * @return プリンタå�?
366             */
367            public String getPrinterName() {
368                    return printerName;
369            }
370    
371            /**
372             * 処ç�?¦�求を処ç�?�™るスレãƒ?ƒ‰IDをセãƒ?ƒˆしますã?
373             *
374             * @param threadId スレãƒ?ƒ‰ID
375             */
376            public void setThreadId( final String threadId ) {
377                    this.threadId = threadId;
378            }
379    
380            /**
381             * 処ç�?¦�求を処ç�?�™るスレãƒ?ƒ‰IDを取得しますã?
382             *
383             * @return スレãƒ?ƒ‰ID
384             */
385            public String getThreadId() {
386                    return threadId;
387            }
388    
389            /**
390             * 出力ファイル名をセãƒ?ƒˆしますã?
391             *
392             * @param outputName 出力ファイルå�?
393             */
394            public void setOutputName( final String outputName ) {
395                    this.outputName = outputName;
396            }
397    
398            /**
399             * 出力ファイル名を設定しますã?
400             * GE50に設定されてã�?�ªã�??合ã?第四引数(要求番号)を利用するã€?
401             * そã?場合ã?タイプに応じた拡張子が自動設定されるã€?
402             *
403             * ".xls" : OUT_ODS_EXCEL
404             * ".pdf" : OUT_ODS_PDF , OUT_ODS_PRINT_PDF
405             * ".ods" : OUT_ODS_ODS
406             * ".xml" : RFID_PRINT , RFID_ALLPRINT , RFID_ALLERASE , RFID_SEQERASE
407             *
408             * @og.rev 4.3.3.4 (2008/11/01) ODS出力対å¿?
409             * @og.rev 5.4.3.0 (2011/12/26) RFIDãƒ?ƒ•ォルト対å¿?
410             * @og.rev 5.4.4.1 (2012/02/03) RFID拡張子変更
411             *
412             * @param       outputDir       出力ディレクトリå�?
413             * @param       outputFile      出力ファイルå�?
414             * @param       type            タイãƒ?
415             * @param       yokyu           要求番号(ファイル名がæŒ?®šされてã�?�ªã�??合ã?ファイルå�?
416             *
417             */
418            public void setOutputName( final String outputDir, final String outputFile, final String type, final String yokyu ){
419                    StringBuilder filePath = new StringBuilder();
420                    filePath.append( outputDir + File.separator );
421    
422                    if( outputFile == null || outputFile.length() == 0 ){ // ファイル名がæŒ?®šされてã�?�ªã�??合ã?要求番号を利用するã€?
423                            if( OUT_ODS_EXCEL.equals( type ) ){
424                                    filePath.append( yokyu );
425                                    filePath.append( ".xls" );
426                            }
427                            else if( OUT_ODS_PDF.equals( type ) || OUT_ODS_PRINT_PDF.equals( type ) ){
428                                    filePath.append( yokyu );
429                                    filePath.append( ".pdf" );
430                            }
431                            // 4.3.3.4 (2008/11/01) 追åŠ?
432                            else if( OUT_ODS_ODS.equals ( type ) ){
433                                    filePath.append( yokyu );
434                                    filePath.append( ".ods" );
435                            }
436                            // 5.4.3.0 (2011/12/26) 追åŠ?
437                            // 5.4.4.2 (2012/02/03) .txtではなã�?xml
438                            else if( ExecQueue.RFID_PRINT.equals( type ) || ExecQueue.RFID_ALLPRINT.equals( type )
439                                            || ExecQueue.RFID_ALLERASE.equals( type ) || ExecQueue.RFID_SEQERASE.equals( type ) ) {
440                                    filePath.append( yokyu );
441                                    filePath.append( ".xml" ); //txt-xml
442                            }
443                    }
444                    else {
445                            filePath.append( outputFile );
446                    }
447    
448                    this.outputName = filePath.toString();
449            }
450    
451            /**
452             * 出力ファイル名を取得しますã?
453             *
454             * @og.rev 5.1.2.0 (2010/01/01) 256シートをè¶?�ˆるå?合に対応ã?2ファイル目以降ã?、_1、_2?¥?¥?¥をファイル名ã?後ろにつける
455             *
456             * @return 出力å?ファイルå�?
457             */
458            public String getOutputName() {
459                    if( pageCnt <= MAX_SHEETS_PER_FILE ) {
460                            return outputName;
461                    }
462                    else {
463                            StringBuilder fileName = new StringBuilder();
464    
465                            int idx = outputName.lastIndexOf( '.' );
466                            String name = outputName.substring( 0, idx );
467                            String suffix = outputName.substring( idx );
468                            int addNo = (int)Math.ceil( (double)pageCnt/(double)MAX_SHEETS_PER_FILE ) - 1;
469    //                      String addName = "_" + String.valueOf( addNo );
470    
471    //                      fileName.append( name ).append( addName ).append( suffix );;
472                            fileName.append( name ).append( "_" ).append( addNo ).append( suffix );
473    
474                            return fileName.toString();
475                    }
476            }
477    
478            /**
479             * 実行ファイルãƒ?‚£レクトリを指定しますã?
480             *
481             * @og.rev 4.3.3.0 (2008/10/01) 板金RFID対å¿?
482             *
483             * @param dir ãƒ?‚£レクトリ
484             */
485            public void setPrgDir( final String dir ) {
486                    this.prgdir = dir;
487            }
488    
489            /**
490             * 実行ファイルãƒ?‚£レクトリを取得しますã?
491             *
492             * @og.rev 4.3.3.0 (2008/10/01) 板金RFID対å¿?
493             *
494             * @return プログラãƒ?ƒ‡ィレクトリ
495             */
496            public String getPrgDir() {
497                    return prgdir;
498            }
499    
500            /**
501             * 実行ファイル名をセãƒ?ƒˆしますã?
502             *
503             * @og.rev 4.3.3.0 (2008/10/01) 板金RFID対å¿?
504             * @param       file    ファイルå�?
505             */
506            public void setPrgFile( final String file ) {
507                    this.prgfile = file;
508            }
509    
510            /**
511             * 実行ファイル名を取得しますã?
512             *
513             * @og.rev 4.3.3.0 (2008/10/01) 板金RFID対å¿?
514             *
515             * @return プログラãƒ?ƒ•ァイルå�?
516             */
517            public String getPrgFile() {
518                    return prgfile;
519            }
520    
521            /**
522             * プリンタIDをセãƒ?ƒˆしますã?
523             *
524             * @og.rev 4.3.3.0 (2008/10/01) 板金RFID対å¿?
525             * @param       id      プリンタID
526             */
527            public void setPrtId( final String id ) {
528                    this.prtid = id;
529            }
530    
531            /**
532             * プリンタIDを取得しますã?
533             *
534             * @og.rev 4.3.3.0 (2008/10/01) 板金RFID対å¿?
535             *
536             * @return プリンタID
537             */
538            public String getPrtId() {
539                    return prtid;
540            }
541    
542            /**
543             * ローカルリソース使用フラグをセãƒ?ƒˆしますã?
544             *
545             * @param       fglocal ローカルリソース使用フラグ[true:使用する/false:使用しない]
546             */
547            public void setFglocal( final boolean fglocal ) {
548                    this.fglocal = fglocal;
549            }
550    
551            /**
552             * ローカルリソース使用フラグを取得しますã?
553             *
554             * @return ロールリソース使用フラグ[true:使用する/false:使用しない]
555             */
556            public boolean isFglocal() {
557                    return fglocal;
558            }
559    
560    //      /**
561    //       * @param fgdirect
562    //       */
563    //      public void setFgdirect( final boolean fgdirect ) {
564    //              this.fgdirect = fgdirect;
565    //      }
566    
567    //      /**
568    //       * @return ãƒ?‚¤レクトå?力フラグ
569    //       */
570    //      public boolean isFgdirect() {
571    //              return fgdirect;
572    //      }
573    
574            /**
575             * ペã?ジエンドカãƒ?ƒˆフラグをセãƒ?ƒˆしますã?
576             *
577             * @param fgcut ペã?ジエンドカãƒ?ƒˆの使用可否[true:使用/false:通常]
578             */
579            public void setFgcut( final boolean fgcut ) {
580                    this.fgcut = fgcut;
581            }
582    
583            /**
584             * ペã?ジエンドカãƒ?ƒˆフラグを取得しますã?
585             *
586             * @return ペã?ジエンドカãƒ?ƒˆフラグ
587             */
588            public boolean isFgcut() {
589                    return fgcut;
590            }
591    
592            /**
593             * キューマネージャーをセãƒ?ƒˆしますã?
594             *
595             * @param manager キューマネージャー
596             */
597            public void setManager( final QueueManager manager ) {
598                    this.manager = manager;
599            }
600    
601            /**
602             * 帳票処ç�?ƒ‡ータをセãƒ?ƒˆしますã?
603             * 既にãƒ??ブルモãƒ?ƒ«がセãƒ?ƒˆされてã�?‚‹場合ã?、å?セãƒ?ƒˆしませんã€?
604             *
605             */
606            public void setData() {
607                    if( body == null && manager != null ) {
608                            manager.set( this );
609                    }
610            }
611    
612            /**
613             * キューを実行中の状態に更新しますã?
614             *
615             */
616            public void setExecute() {
617                    if( manager != null ) {
618                            manager.execute( this );
619                    }
620            }
621    
622            /**
623             * キューを完äº?¸ˆã?状態に更新しますã?
624             *
625             */
626            public void setComplete() {
627                    if( manager != null ) {
628                            manager.complete( this );
629                    }
630            }
631    
632            /**
633             * キューをエラーの状態に更新しますã?
634             */
635            public void setError() {
636                    if( manager != null ) {
637                            manager.error( this );
638                    }
639            }
640    
641            /**
642             * エラーメãƒ?‚»ージをセãƒ?ƒˆしますã?
643             *
644             * @param msg エラーメãƒ?‚»ージ
645             */
646            public void addMsg( final String msg ) {
647    //              this.msg.append( msg );
648                    errMsg.append( msg );
649            }
650    
651            /**
652             * エラーメãƒ?‚»ージを取得しますã?
653             *
654             * @return エラーメãƒ?‚»ージ
655             */
656            public String getMsg() {
657    //              return msg.toString();
658                    return errMsg.toString();
659            }
660    
661            /**
662             * 処ç�?�—たã?ージ数を引数のåˆ?� けカウントアãƒ??しますã?
663             *
664             * @og.rev 5.1.2.0 (2010/01/01) 新規追åŠ?
665             *
666             * @param pgs カウントアãƒ??するペã?ジ数
667             */
668            public void addExecPageCnt( final int pgs ) {
669                    pageCnt += pgs;
670            }
671    
672            /**
673             * 処ç�?�—たã?ージ数を返しますã?
674             *
675             * @og.rev 5.1.2.0 (2010/01/01) 新規追åŠ?
676             *
677             * @return 処ç�?�—たã?ージ数
678             */
679            public int getExecPagesCnt() {
680                    return pageCnt;
681            }
682    
683            /**
684             * 処ç�?�—た行数をセãƒ?ƒˆしますã?
685             *
686             * @og.rev 5.1.2.0 (2010/01/01) 新規追åŠ?
687             *
688             * @param rws 処ç�?�—た行数
689             */
690            public void setExecRowCnt( final int rws ) {
691                    rowCnt = rws;
692            }
693    
694            /**
695             * 処ç�?�—た行数を返しますã?
696             *
697             * @og.rev 5.1.2.0 (2010/01/01) 新規追åŠ?
698             *
699             * @return 処ç�?�—た行数
700             */
701            public int getExecRowCnt() {
702                    return rowCnt;
703            }
704    
705            /**
706             * 全ての行が処ç�?�•れたかをセãƒ?ƒˆしますã?
707             *
708             * これは、å?ç�?µ�果がã?256シートをè¶?�ˆてã�?�Ÿ場合ã?再度残りのãƒ??タにつã�?�¦
709             * 処ç�?‚’行うかどã�?�‹の判定するために、利用しますã?
710             *
711             * @og.rev 5.1.2.0 (2010/01/01) 新規追åŠ?
712             *
713             * @param flag 全ての行が処ç�?�•れたã�?
714             */
715            public void setEnd( final boolean flag ) {
716                    isDataEnd = flag;
717            }
718    
719            /**
720             * 全ての行が処ç�?�•れてã�?‚‹かを返しますã?
721             *
722             * これは、å?ç�?µ�果がã?256シートをè¶?�ˆてã�?�Ÿ場合ã?再度残りのãƒ??タにつã�?�¦
723             * 処ç�?‚’行うかどã�?�‹の判定するために、利用しますã?
724             *
725             * @og.rev 5.1.2.0 (2010/01/01) 新規追åŠ?
726             *
727             * @return 全ての行が処ç�?�•れたã�?
728             */
729            public boolean isEnd() {
730                    return isDataEnd;
731            }
732    }