    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 */
    016package org.opengion.hayabusa.report2;
    017
    018import org.opengion.fukurou.system.OgRuntimeException ;         // 6.4.2.0 (2016/01/29)
    019import java.io.File;
    020
    021import org.opengion.fukurou.util.StringUtil;                            // 6.9.8.1 (2018/06/11)
    022import org.opengion.hayabusa.db.DBTableModel;
    023import static org.opengion.fukurou.system.HybsConst.BUFFER_MIDDLE;      // 6.1.0.0 (2014/12/26) refactoring
    024
    025/**
    026 * 帳票処理要求を管理するキューオブジェクトです。
    027 * このオブジェクトでは、帳票の定義及びデータと、処理中に発生したエラーメッセージを管理します。
    028 * また、このキューを生成したオブジェクトもこのオブジェクトにセットされます。
    029 *
    030 * @og.group 帳票システム
    031 *
    032 * @version  4.0
    033 * @author   Hiroki.Nakamura
    034 * @since    JDK1.6
    035 */
    036public class ExecQueue {
    037
    038        /** 実行方法 {@value} */
    039        protected static final String OUT_ODS_ONLY              = "1";          // 変換のみ
    040        /** 実行方法 {@value} */
    041        protected static final String OUT_PRINT_ONLY    = "2";          // (印刷のみ)
    042        /** 実行方法 {@value} */
    043        protected static final String OUT_ODS_PRINT             = "3";          // ﾌﾟﾘﾝﾀ出力
    044        /** 実行方法 {@value} */
    045        protected static final String OUT_ODS_PDF               = "P";          // PDF出力
    046        /** 実行方法 {@value} */
    047        protected static final String OUT_ODS_PRINT_PDF = "Q";          // PDF+印刷
    048        /** 実行方法 {@value} */
    049        protected static final String OUT_ODS_EXCEL             = "E";          // Excel出力
    050        /** 実行方法 {@value} */
    051        protected static final String OUT_ODS_ODS               = "S";          // ODS出力 4.3.3.4 (2008/11/01) 追加
    052        /** 実行方法 {@value} */
    053        protected static final String IN_INPUT_ONLY             = "5";          // (取込のみ)
    054        /** 実行方法 {@value} */
    055        protected static final String IN_EXEC_ONLY              = "6";          // (PG起動)
    056        /** 実行方法 {@value} */
    057        protected static final String IN_INPUT_EXEC             = "7";          // 取込・PG起動
    058        /** 実行方法 {@value} */
    059        protected static final String RFID_PRINT                = "A";          // RFID(通常印刷)
    060        /** 実行方法 {@value} */
    061        protected static final String RFID_ALLPRINT             = "B";          // RFID(全印刷)
    062        /** 実行方法 {@value} */
    063        protected static final String RFID_ALLERASE             = "C";          // RFID(全消去)
    064        /** 実行方法 {@value} */
    065        protected static final String RFID_SEQERASE             = "D";          // RFID(連続消去)
    066
    067        // 5.9.0.0 (2015/09/04) CSV出力対応
    068        /** 実行方法 {@value} */
    069        protected static final String CSV_PRINT                 = "G";
    070        /** 実行方法 {@value} */
    071        protected static final String CSV_PRINT_EXCEL   = "H";
    072        /** 実行方法 {@value} */
    073        protected static final String CSV_PRINT_PDF             = "I";
    074        /** 実行方法 {@value} */
    075        protected static final String CSV_PRINT_EXCEL2  = "J";          // 5.9.4.2 (2016/01/15) EXCEL2追加
    076
    077        /** 最大シート数 {@value} */
    078//      protected static final int MAX_SHEETS_PER_FILE  = 256;          // 5.1.2.0 (2010/01/01)
    079        protected static final int MAX_SHEETS_PER_FILE  = 999;          // 7.1.0.0 (2020/01/27) 256シート制限を999にしておく。
    080
    081        private String          ykno            ;
    082        private String          systemId        ;
    083        private DBTableModel body               ;
    084        private DBTableModel header             ;
    085        private DBTableModel footer             ;
    086        private String          listId          ;
    087        private String          pdfPasswd       ;
    088        private String          lang            ;
    089        private String          threadId        ;
    090        private String          templateName;
    091        private String          outputType      ;
    092        private String          printerName     ;
    093        private String          outputName      ;
    094        private boolean         fglocal         ;
    095        private boolean         fgcut           ;
    096        private QueueManager manager    ;
    097        private String          prgdir          ;               // 4.3.3.0 (2008/10/01) 板金RFID対応。
    098        private String          prgfile         ;               // 4.3.3.0 (2008/10/01)
    099        private String          prtid           ;               // 4.3.3.0 (2008/10/01)
    100
    101        private String          grpid           ;               // 5.9.2.2 (2015/11/20)
    102        private String          dmngrp          ;               // 5.9.2.2 (2015/11/20)
    103        private int                     pageCnt         ;               // 5.1.2.0 (2010/01/01) 処理したページ数
    104        private int                     rowCnt          ;               // 5.1.2.0 (2010/01/01) 処理した行数
    105        private boolean         isDataEnd       ;               // 5.1.2.0 (2010/01/01) 全データが処理されたか (メソッド名と同じ変数名変更)
    106
    107        private boolean         useSheetName;           // 5.7.6.2 (2014/05/16) PAGEBREAKカラムの値を、シート名として使うかどうか。
    108//      private String          fgnoml          = "0";  // 5.10.0.0 (2018/06/08) メール不要フラグ
    109        private boolean         fgnoml          ;               // 6.9.8.1 (2018/06/11) 帳票エラーメールの改修(メール不要フラグ=trueで不要、falseが必要)
    110
    111        private final StringBuilder errMsg = new StringBuilder( BUFFER_MIDDLE );
    112
    113        /**
    114         * デフォルトコンストラクター
    115         *
    116         * @og.rev 6.4.2.0 (2016/01/29) PMD refactoring. Each class should declare at least one constructor.
    117         */
    118        public ExecQueue() { super(); }         // これも、自動的に呼ばれるが、空のメソッドを作成すると警告されるので、明示的にしておきます。
    119
    120        /**
    121         * 要求NOをセットします。
    122         *
    123         * @param ykno 要求NO
    124         */
    125        public void setYkno( final String ykno ) {
    126                this.ykno = ykno;
    127        }
    128
    129        /**
    130         * 要求NOを取得します。
    131         *
    132         * @return      要求NO
    133         */
    134        public String getYkno() {
    135                return ykno;
    136        }
    137
    138        /**
    139         * システムIDをセットします。
    140         *
    141         * @param systemId システムID
    142         */
    143        public void setSystemId( final String systemId ) {
    144                this.systemId = systemId;
    145        }
    146
    147        /**
    148         * システムIDを取得します。
    149         *
    150         * @return  StringシステムID
    151         */
    152        public String getSystemId() {
    153                return systemId;
    154        }
    155
    156        /**
    157         * ボディー部分のDBTableModelをセットします。
    158         *
    159         * @param body DBTableModelオブジェクト
    160         */
    161        public void setBody( final DBTableModel body ) {
    162                this.body = body;
    163        }
    164
    165        /**
    166         * ボディー部分のDBTableModelを取得します。
    167         *
    168         * @return      ボディー部分のDBTableModelオブジェクト
    169         */
    170        public DBTableModel getBody() {
    171                return body;
    172        }
    173
    174        /**
    175         * ヘッダー部分のDBTableModelをセットします。
    176         *
    177         * @param header DBTableModelオブジェクト
    178         */
    179        public void setHeader( final DBTableModel header ) {
    180                this.header = header;
    181        }
    182
    183        /**
    184         * ヘッダー部分のDBTableModelを取得します。
    185         *
    186         * @return      ヘッダー部分のDBTableModelオブジェクト
    187         */
    188        public DBTableModel getHeader() {
    189                return header;
    190        }
    191
    192        /**
    193         * フッター部分のDBTableModelをセットします。
    194         *
    195         * @param footer DBTableModelオブジェクト
    196         */
    197        public void setFooter( final DBTableModel footer ) {
    198                this.footer = footer;
    199        }
    200
    201        /**
    202         * フッター部分のDBTableModelを取得します。
    203         *
    204         * @return      フッター部分のDBTableModelオブジェクト
    205         */
    206        public DBTableModel getFooter() {
    207                return footer;
    208        }
    209
    210        /**
    211         * 帳票IDをセットします。
    212         *
    213         * @param listId 帳票ID
    214         */
    215        public void setListId( final String listId ) {
    216                this.listId = listId;
    217        }
    218
    219        /**
    220         * 帳票IDを取得します。
    221         *
    222         * @return 帳票ID
    223         */
    224        public String getListId() {
    225                return listId;
    226        }
    227
    228        /**
    229         * PDFパスワードをセットします。
    230         *
    231         * @param pdfPasswd PDFパスワード
    232         */
    233        public void setPdfPasswd( final String pdfPasswd ) {
    234                this.pdfPasswd = pdfPasswd;
    235        }
    236
    237        /**
    238         * PDFパスワードを取得します。
    239         *
    240         * @return PDFパスワード
    241         */
    242        public String getPdfPasswd() {
    243                return pdfPasswd;
    244        }
    245
    246        /**
    247         * 言語をセットします。
    248         *
    249         * @param lang 言語
    250         */
    251        public void setLang( final String lang ) {
    252                this.lang = lang;
    253        }
    254
    255        /**
    256         * 言語を取得します。
    257         *
    258         * @return 言語
    259         */
    260        public String getLang() {
    261                return lang;
    262        }
    263
    264        /**
    265         * 雛形ファイル名をセットします。
    266         *
    267         * @param templateName 雛形ファイル名
    268         */
    269        public void setTemplateName( final String templateName ) {
    270                this.templateName = templateName;
    271        }
    272
    273        /**
    274         * 雛形ファイル名を取得します。
    275         *
    276         * @return 帳票雛形ファイル名
    277         */
    278        public String getTemplateName() {
    279                return templateName;
    280        }
    281
    282        /**
    283         * 実行方法をセットします。
    284         *
    285         * @param outputType 実行方法
    286         */
    287        public void setOutputType( final String outputType ) {
    288                this.outputType = outputType;
    289        }
    290
    291        /**
    292         * 出力タイプを取得します。
    293         *
    294         * @return 出力タイプ
    295         */
    296        public String getOutputType() {
    297                return outputType;
    298        }
    299
    300        /**
    301         * プリンター名をセットします。
    302         *
    303         * @param  printerName プリンター名
    304         */
    305        public void setPrinterName( final String printerName ) {
    306                this.printerName = printerName;
    307        }
    308
    309        /**
    310         * プリンター名を取得します。
    311         *
    312         * @return プリンタ名
    313         */
    314        public String getPrinterName() {
    315                return printerName;
    316        }
    317
    318        /**
    319         * 処理要求を処理するスレッドIDをセットします。
    320         *
    321         * @param threadId スレッドID
    322         */
    323        public void setThreadId( final String threadId ) {
    324                this.threadId = threadId;
    325        }
    326
    327        /**
    328         * 処理要求を処理するスレッドIDを取得します。
    329         *
    330         * @return スレッドID
    331         */
    332        public String getThreadId() {
    333                return threadId;
    334        }
    335
    336        /**
    337         * 出力ファイル名をセットします。
    338         *
    339         * @param outputName 出力ファイル名
    340         */
    341        public void setOutputName( final String outputName ) {
    342                this.outputName = outputName;
    343        }
    344
    345        /**
    346         * 出力ファイル名を設定します。
    347         * GE50に設定されていない場合は第四引数(要求番号)を利用する。
    348         * その場合、タイプに応じた拡張子が自動設定される。
    349         *
    350         * ".xls" : OUT_ODS_EXCEL
    351         * ".pdf" : OUT_ODS_PDF , OUT_ODS_PRINT_PDF
    352         * ".ods" : OUT_ODS_ODS
    353         * ".xml" : RFID_PRINT , RFID_ALLPRINT , RFID_ALLERASE , RFID_SEQERASE
    354         * ".csv" : CSV_PINT , CSV_PRINT_EXCEL , CSV_PRINT_PDF
    355         *
    356         * @og.rev 4.3.3.4 (2008/11/01) ODS出力対応
    357         * @og.rev 5.4.3.0 (2011/12/26) RFIDデフォルト対応
    358         * @og.rev 5.4.4.1 (2012/02/03) RFID拡張子変更
    359         * @og.rev 5.9.0.0 (2015/09/04) CSV対応
    360         *
    361         * @param       outputDir       出力ディレクトリ名
    362         * @param       outputFile      出力ファイル名
    363         * @param       type            タイプ
    364         * @param       yokyu           要求番号(ファイル名が指定されていない場合のファイル名)
    365         *
    366         */
    367        public void setOutputName( final String outputDir, final String outputFile, final String type, final String yokyu ){
    368                final StringBuilder filePath = new StringBuilder( BUFFER_MIDDLE );
    369                filePath.append( outputDir ).append( File.separator );          // 6.0.2.5 (2014/10/31) char を append する。
    370
    371                if( outputFile == null || outputFile.isEmpty() ){ // ファイル名が指定されていない場合は要求番号を利用する。
    372                        if( OUT_ODS_EXCEL.equals( type ) ){
    373                                filePath.append( yokyu );
    374                                filePath.append( ".xls" );
    375                        }
    376                        else if( OUT_ODS_PDF.equals( type ) || OUT_ODS_PRINT_PDF.equals( type ) ){
    377                                filePath.append( yokyu );
    378                                filePath.append( ".pdf" );
    379                        }
    380                        // 4.3.3.4 (2008/11/01) 追加
    381                        else if( OUT_ODS_ODS.equals ( type ) ){
    382                                filePath.append( yokyu );
    383                                filePath.append( ".ods" );
    384                        }
    385                        // 5.4.3.0 (2011/12/26) 追加
    386                        // 5.4.4.2 (2012/02/03) .txtではなく.xml
    387                        else if( ExecQueue.RFID_PRINT.equals( type ) || ExecQueue.RFID_ALLPRINT.equals( type )
    388                                        || ExecQueue.RFID_ALLERASE.equals( type ) || ExecQueue.RFID_SEQERASE.equals( type ) ) {
    389                                filePath.append( yokyu );
    390                                filePath.append( ".xml" ); //txt-xml
    391                        }
    392                        // 5.9.0.0 (2015/09/04) 追加
    393                        // 5.9.4.2 (2016/01/13) EXCEL2追加
    394                        else if( ExecQueue.CSV_PRINT.equals( type ) || ExecQueue.CSV_PRINT_EXCEL.equals( type )
    395                                        || ExecQueue.CSV_PRINT_PDF.equals( type ) || ExecQueue.CSV_PRINT_EXCEL2.equals( type ) ) {
    396                                filePath.append( yokyu );
    397                                filePath.append( ".csv" );
    398                        }
    399                }
    400                else {
    401                        filePath.append( outputFile );
    402                }
    403
    404                this.outputName = filePath.toString();
    405        }
    406
    407        /**
    408         * 出力ファイル名を取得します。
    409         *
    410         * @og.rev 5.1.2.0 (2010/01/01) 256シートを超える場合に対応。2ファイル目以降は、_1、_2･･･をファイル名の後ろにつける
    411         * @og.rev 6.3.9.0 (2015/11/06) コンストラクタで初期化されていないフィールドを null チェックなしで利用している(findbugs)
    412         *
    413         * @return 出力先ファイル名
    414         * @og.rtnNotNull
    415         */
    416        public String getOutputName() {
    417                // 6.3.9.0 (2015/11/06) コンストラクタで初期化されていないフィールドを null チェックなしで利用している(findbugs)
    418                if( outputName == null ) {
    419                        final String errMsg = "#setOutputName(String) または、#setOutputName(String,String,String,String)を先に実行しておいてください。" ;
    420                        throw new OgRuntimeException( errMsg );
    421                }
    422
    423                if( pageCnt <= MAX_SHEETS_PER_FILE ) {
    424                        return outputName;
    425                }
    426                else {
    427                        final StringBuilder fileName = new StringBuilder( BUFFER_MIDDLE );
    428
    429                        final int idx = outputName.lastIndexOf( '.' );
    430                        final String name = outputName.substring( 0, idx );
    431                        final String suffix = outputName.substring( idx );
    432                        final int addNo = (int)Math.ceil( (double)pageCnt/(double)MAX_SHEETS_PER_FILE ) - 1;
    433
    434                        fileName.append( name ).append( '_' ).append( addNo ).append( suffix );         // 6.0.2.5 (2014/10/31) char を append する。
    435
    436                        return fileName.toString();
    437                }
    438        }
    439
    440        /**
    441         * 実行ファイルディレクトリを指定します。
    442         *
    443         * @og.rev 4.3.3.0 (2008/10/01) 板金RFID対応
    444         *
    445         * @param dir ディレクトリ
    446         */
    447        public void setPrgDir( final String dir ) {
    448                this.prgdir = dir;
    449        }
    450
    451        /**
    452         * 実行ファイルディレクトリを取得します。
    453         *
    454         * @og.rev 4.3.3.0 (2008/10/01) 板金RFID対応
    455         *
    456         * @return プログラムディレクトリ
    457         */
    458        public String getPrgDir() {
    459                return prgdir;
    460        }
    461
    462        /**
    463         * 実行ファイル名をセットします。
    464         *
    465         * @og.rev 4.3.3.0 (2008/10/01) 板金RFID対応
    466         * @param       file    ファイル名
    467         */
    468        public void setPrgFile( final String file ) {
    469                this.prgfile = file;
    470        }
    471
    472        /**
    473         * 実行ファイル名を取得します。
    474         *
    475         * @og.rev 4.3.3.0 (2008/10/01) 板金RFID対応
    476         *
    477         * @return プログラムファイル名
    478         */
    479        public String getPrgFile() {
    480                return prgfile;
    481        }
    482
    483        /**
    484         * プリンタIDをセットします。
    485         *
    486         * @og.rev 4.3.3.0 (2008/10/01) 板金RFID対応
    487         * @param       id      プリンタID
    488         */
    489        public void setPrtId( final String id ) {
    490                this.prtid = id;
    491        }
    492
    493        /**
    494         * プリンタIDを取得します。
    495         *
    496         * @og.rev 4.3.3.0 (2008/10/01) 板金RFID対応
    497         *
    498         * @return プリンタID
    499         */
    500        public String getPrtId() {
    501                return prtid;
    502        }
    503
    504        /**
    505         * グループIDをセットします。
    506         *
    507         * @og.rev 5.9.2.2 (2015/11/20)
    508         *
    509         * @param       id      グループID
    510         */
    511        public void setGrpId( final String id ) {
    512                this.grpid = id;
    513        }
    514
    515        /**
    516         * グループIDを取得します。
    517         *
    518         * @og.rev 5.9.2.2 (2015/11/20)
    519         *
    520         * @return グループID
    521         */
    522        public String getGrpId() {
    523                return grpid;
    524        }
    525
    526        /**
    527         * デーモングループをセットします。
    528         *
    529         * @og.rev 5.9.2.2 (2015/11/20)
    530         *
    531         * @param       name    デーモングループ
    532         */
    533        public void setDmnGrp( final String name ) {
    534                this.dmngrp = name;
    535        }
    536
    537        /**
    538         * デーモングループを取得します。
    539         *
    540         * @og.rev 5.9.2.2 (2015/11/20)
    541         *
    542         * @return デーモングループ
    543         */
    544        public String getDmnGrp() {
    545                return dmngrp;
    546        }
    547
    548        /**
    549         * ローカルリソース使用フラグをセットします(初期値:false)。
    550         *
    551         * @param       fglocal ローカルリソース使用フラグ[true:使用する/false:使用しない]
    552         */
    553        public void setFglocal( final boolean fglocal ) {
    554                this.fglocal = fglocal;
    555        }
    556
    557        /**
    558         * ローカルリソース使用フラグを取得します。
    559         *
    560         * @return ロールリソース使用フラグ[true:使用する/false:使用しない]
    561         */
    562        public boolean isFglocal() {
    563                return fglocal;
    564        }
    565
    566        /**
    567         * ページエンドカットフラグをセットします(初期値:false)。
    568         *
    569         * @param fgcut ページエンドカットの使用可否[true:使用/false:通常]
    570         */
    571        public void setFgcut( final boolean fgcut ) {
    572                this.fgcut = fgcut;
    573        }
    574
    575        /**
    576         * ページエンドカットフラグを取得します。
    577         *
    578         * @return ページエンドカットフラグ
    579         */
    580        public boolean isFgcut() {
    581                return fgcut;
    582        }
    583
    584        /**
    585         * PAGEBREAKカラムの値を、シート名として使うかどうかをセットします(初期値:false)。
    586         *
    587         * @og.rev 5.7.6.2 (2014/05/16) 新規追加
    588         *
    589         * @param useSheetName PAGEBREAKカラムのシート名使用可否[true:使用/false:使用しない]
    590         */
    591        public void setUseSheetName( final boolean useSheetName ) {
    592                this.useSheetName = useSheetName;
    593        }
    594
    595        /**
    596         * PAGEBREAKカラムの値を、シート名として使うかどうかを取得します。
    597         *
    598         * @og.rev 5.7.6.2 (2014/05/16) 新規追加
    599         *
    600         * @return PAGEBREAKカラムのシート名使用可否[true:使用/false:使用しない]
    601         */
    602        public boolean isUseSheetName() {
    603                return useSheetName;
    604        }
    605
    606        /**
    607         * キューマネージャーをセットします。
    608         *
    609         * @param manager キューマネージャー
    610         */
    611        public void setManager( final QueueManager manager ) {
    612                this.manager = manager;
    613        }
    614
    615        /**
    616         * 帳票処理データをセットします。
    617         * 既にテーブルモデルがセットされている場合は、再セットしません。
    618         *
    619         */
    620        public void setData() {
    621                if( body == null && manager != null ) {
    622                        manager.set( this );
    623                }
    624        }
    625
    626        /**
    627         * キューを実行中の状態に更新します。
    628         *
    629         */
    630        public void setExecute() {
    631                if( manager != null ) {
    632                        manager.execute( this );
    633                }
    634        }
    635
    636        /**
    637         * キューを完了済の状態に更新します。
    638         *
    639         */
    640        public void setComplete() {
    641                if( manager != null ) {
    642                        manager.complete( this );
    643                }
    644        }
    645
    646        /**
    647         * キューをエラーの状態に更新します。
    648         */
    649        public void setError() {
    650                if( manager != null ) {
    651                        manager.error( this );
    652                }
    653        }
    654
    655        /**
    656         * エラーメッセージをセットします。
    657         *
    658         * @param msg エラーメッセージ
    659         */
    660        public void addMsg( final String msg ) {
    661                errMsg.append( msg );
    662        }
    663
    664        /**
    665         * エラーメッセージを取得します。
    666         *
    667         * @return エラーメッセージ
    668         * @og.rtnNotNull
    669         */
    670        public String getMsg() {
    671                return errMsg.toString();
    672        }
    673
    674        /**
    675         * 処理したページ数を引数の分だけカウントアップします。
    676         *
    677         * これは、256シート以上を印刷する場合、ﾌｧｲﾙ名に"_"を付けて
    678         * 出力する機能と、GE50のSUPAGEカラムに印刷ページ数をセットするのに
    679         * 使用しています。
    680         * openOfficeのシート制限は解除されていますが、SUPAGEカラムが
    681         * NUMBER(3) でDB定義されているため、1000以上のページを、GE50 に
    682         * セットすると、ｴﾗｰになります。
    683         * DB定義を変更するまでの間、最大ページ数を、999 としておきます。
    684         *
    685         * @og.rev 5.1.2.0 (2010/01/01) 新規追加
    686         * @og.rev 7.1.0.0 (2020/01/27) 256シート制限を999にしておく。
    687         *
    688         * @param pgs カウントアップするページ数
    689         */
    690        public void addExecPageCnt( final int pgs ) {
    691                pageCnt += pgs;
    692
    693                // 7.1.0.0 (2020/01/27) 256シート制限を999にしておく。
    694                if( pageCnt > MAX_SHEETS_PER_FILE ) { pageCnt = MAX_SHEETS_PER_FILE; }
    695        }
    696
    697        /**
    698         * 処理したページ数を返します。
    699         *
    700         * @og.rev 5.1.2.0 (2010/01/01) 新規追加
    701         *
    702         * @return 処理したページ数
    703         */
    704        public int getExecPagesCnt() {
    705                return pageCnt;
    706        }
    707
    708        /**
    709         * 処理した行数をセットします。
    710         *
    711         * @og.rev 5.1.2.0 (2010/01/01) 新規追加
    712         *
    713         * @param rws 処理した行数
    714         */
    715        public void setExecRowCnt( final int rws ) {
    716                rowCnt = rws;
    717        }
    718
    719        /**
    720         * 処理した行数を返します。
    721         *
    722         * @og.rev 5.1.2.0 (2010/01/01) 新規追加
    723         *
    724         * @return 処理した行数
    725         */
    726        public int getExecRowCnt() {
    727                return rowCnt;
    728        }
    729
    730        /**
    731         * 全ての行が処理されたかをセットします(初期値:false)。
    732         *
    733         * これは、処理結果が、256シートを超えていた場合、再度残りのデータについて
    734         * 処理を行うかどうかの判定するために、利用します。
    735         *
    736         * @og.rev 5.1.2.0 (2010/01/01) 新規追加
    737         *
    738         * @param flag 全ての行が処理されたか
    739         */
    740        public void setEnd( final boolean flag ) {
    741                isDataEnd = flag;
    742        }
    743
    744        /**
    745         * 全ての行が処理されているかを返します。
    746         *
    747         * これは、処理結果が、256シートを超えていた場合、再度残りのデータについて
    748         * 処理を行うかどうかの判定するために、利用します。
    749         *
    750         * @og.rev 5.1.2.0 (2010/01/01) 新規追加
    751         *
    752         * @return 全ての行が処理されたか
    753         */
    754        public boolean isEnd() {
    755                return isDataEnd;
    756        }
    757
    758        /**
    759         * FGNOMI(メール不要フラグ)を設定します(初期値=false:送信する)。
    760         *
    761         * 帳票エラー時のメール送信は帳票IDの正規表現でコントロール可能でしたが、
    762         * ID単位に未送信フラグを持たせてコントロール可能にします。
    763         * GE54にFGNOMLカラムを追加し、これが1の場合はエラーメールを送信しないようにします。
    764         * 帳票の動作にDBのカラム追加が伴うためバージョンを5.10系に上げます。
    765         * エラーメールが不要の場合は、"true", もしくは、１文字の場合のみ、"0" 以外の場合が、
    766         * メール不要として、エラーメールを送信しません。
    767         *
    768         * @og.rev 5.10.0.0 (2018/06/08) 新規追加
    769         * @og.rev 6.9.8.1 (2018/06/11) 帳票エラーメールの改修(メール不要フラグ=trueで不要、falseが必要)
    770         *
    771//       * @param fgnoml
    772         * @param flag メール不要フラグ
    773         */
    774//      public void setFgnoml( final String fgnoml) {
    775        public void setFgnoml( final String flag ) {
    776//              this.fgnoml = fgnoml;
    777                fgnoml = StringUtil.nval( flag,fgnoml );                // true,TRUE,0以外の１文字の場合、true、それ以外は、初期値
    778        }
    779
    780        /**
    781         * FGNOMI(メール不要フラグ)を取得します。
    782         *
    783         * @og.rev 5.10.0.0 (2018/06/08) 新規追加
    784         * @og.rev 6.9.8.1 (2018/06/11) 帳票エラーメールの改修(メール不要フラグ=trueで不要、falseが必要)
    785         *
    786//       * @return fgnomi
    787         * @return メール不要フラグ [true:メール不要/false:エラーメール送信する]
    788         */
    789//      public String getFgnoml() {
    790        public boolean isFgnoml() {
    791//              return this.fgnoml;
    792                return fgnoml;
    793        }
    794}