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