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", もしくは、1文字の場合のみ、"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以外の1文字の場合、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}