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.report;
017
018import org.opengion.hayabusa.common.HybsSystem;
019import org.opengion.hayabusa.common.HybsSystemException;                // 7.0.6.4 (2019/11/29)
020
021import static org.opengion.fukurou.system.HybsConst.CR ;                // 6.1.0.0 (2014/12/26)
022import org.opengion.fukurou.system.DateSet;                                             // 6.4.2.0 (2016/01/29)
023import org.opengion.fukurou.system.LogWriter;
024import org.opengion.fukurou.util.StringUtil;
025import org.opengion.fukurou.db.ApplicationInfo;
026import org.opengion.fukurou.db.DBUtil;
027//import org.opengion.fukurou.mail.MailTX ;                                             // 7.4.4.0 (2021/06/30) Delete
028import org.opengion.fukurou.db.ConnectionFactory;                               // 5.9.31.2 (2018/04/20)
029import org.opengion.fukurou.db.DBFunctionName;                                  // 5.9.31.2 (2018/04/20)
030import org.opengion.fukurou.db.Transaction;                                             // 5.9.31.2 (2018/04/20)
031import org.opengion.fukurou.db.TransactionReal;                                 // 5.9.31.2 (2018/04/20)
032
033// import java.util.Arrays;                                                                             // 8.0.0.0 (2021/07/31) Delete
034
035/**
036 * 帳票要求テーブル(GE50)と、エラーテーブル(GE56)に対して、データ書込みを行います。
037 *
038 * このクラスでは、4つの機能を実装しています。
039 *
040 * ●要求番号採番機能: makeYkno()
041 *   新たな要求番号を採番します(シーケンスより取得)
042 *   採番後、内部の要求番号(ykno)もこの値に再セットされます。
043 * ●帳票要求テーブルデータセット機能: insertGE50( final String fgkan )
044 *   内部変数にセットされている値を利用して、データ登録を行います。
045 *   繰返し登録したい場合は、変更する値のみを、内部変数にセットしてから、
046 *   このメソッドを呼び出してください。
047 *   なお、完成フラグ(fgkan)は、内部変数に持っていないため、外部から指定してください。
048 * ●完成フラグ設定機能: updateGE50( final String fgkan )
049 *   内部変数にセットされている、systemId と ykno を利用して、データ登録を行います。
050 *   なお、完成フラグ(fgkan)は、内部変数に持っていないため、外部から指定してください。
051 * ●エラーメッセージ登録機能: insertErrorGE56( final String inErrMsg )
052 *   エラー発生時に、エラーメッセージを登録します。
053 *   内部変数にセットされている、systemId と ykno を利用して、データ登録を行います。
054 *   なお、このメソッドは、要求テーブルの完成フラグは、なにもしませんので、
055 *   完成フラグ設定機能と併用してください。
056 *   また、システムパラメータ の COMMON_MAIL_SERVER(メールサーバー)と
057 *   ERROR_MAIL_FROM_USER(エラーメール発信元)と、ERROR_MAIL_TO_USERS(エラーメール受信者)
058 *   がすべて設定されている場合に、エラー情報のメール送信を行います。
059 *
060 * @og.rev 3.8.0.0 (2005/06/07) 新規追加
061 * @og.group 帳票システム
062 *
063 * @version  4.0
064 * @author   Kazuhiko Hasegawa
065 * @since    JDK5.0,
066 */
067public class GE50Access {
068        /** 完成フラグのフラグ定義(登録) {@value} */
069        public static final String FG_SET  = "1";       // 登録
070        /** 完成フラグのフラグ定義(済み) {@value} */
071        public static final String FG_OK   = "2";       // 済み
072        /** 完成フラグのフラグ定義(実行中) {@value} */
073        public static final String FG_RUN  = "3";       // 実行中
074        /** 完成フラグのフラグ定義(手動) {@value} */
075        public static final String FG_HAND = "4";       // 手動
076        /** 完成フラグのフラグ定義(印刷待ち) {@value} */
077        public static final String FG_WAIT = "5";       // 印刷待ち
078        /** 完成フラグのフラグ定義(取込済) {@value} */
079        public static final String FG_DBIN = "6";       // 取込済  Ver 3.8.0.0
080        /** 完成フラグのフラグ定義(デーモンエラー) {@value} */
081        public static final String FG_ERR1 = "7";       // デーモンエラー
082        /** 完成フラグのフラグ定義(アプリエラー) {@value} */
083        public static final String FG_ERR2 = "8";       // アプリエラー
084
085        // GE50 の要求番号のシーケンスを取得します。
086//      private static final String GE50_SEQ = "SELECT GE50_SEQUENCE.NEXTVAL FROM DUAL" ;
087//      private static final String GE50_SEQ = "GE50_SEQUENCE";                                                         // 5.9.31.2 (2018/04/20)
088        private static final String GE50_SEQ = "GE50S01";                                                                       // 7.0.6.4 (2019/11/29) シーケンス名が間違っていた。
089
090//      // 5.2.0.0 (2010/09/01) Ver4互換モード対応
091//      // 6.9.5.0 (2018/04/23) VER4_COMPATIBLE_MODE 廃止
092//      private static final String OUT_FILE = HybsSystem.sysBool( "VER4_COMPATIBLE_MODE" ) ? "OUTFILE" : "OUT_FILE";
093//      private static final String OUT_DIR = HybsSystem.sysBool( "VER4_COMPATIBLE_MODE" ) ? "OUTDIR" : "OUT_DIR";
094
095        // GE50 に要求データを設定します。
096        // 5.0.3.0 (2009/11/04) OUTFILE ⇒ OUT_FILE , OUTDIR ⇒ OUT_DIR
097        // 5.2.0.0 (2010/09/01) Ver4互換モード対応
098        // 6.9.5.0 (2018/04/23) VER4_COMPATIBLE_MODE 廃止
099        private static final String GE50_INSERT =
100                "INSERT INTO GE50" +
101//              " (SYSTEM_ID,YKNO,LISTID,JOKEN,FGKAN,"+OUT_DIR+","+OUT_FILE+",COMMENTS," +
102                " (SYSTEM_ID,YKNO,LISTID,JOKEN,FGKAN,OUT_DIR,OUT_FILE,COMMENTS," +
103                "  FGJ,DYSET,DYUPD,USRSET,USRUPD,PGUPD,DMN_NAME,DMN_HOST )" +
104                " VALUES" +
105                "  (?,?,?,?,?,?,?,SUBSTRB(?,1,100)," +
106                "  '1',?,?,?,?,?,?,? )" ;
107
108        // GE50 の完成フラグを設定するSQL文です。
109        // 3.8.0.4 (2005/08/08) PGUPD も更新するように変更
110        private static final String GE50_UPDATE =
111                "UPDATE GE50 SET FGKAN = ? , DYUPD = ? , DMN_NAME = ? , DMN_HOST = ? " +
112                " WHERE FGJ = '1'" +
113                " AND   SYSTEM_ID = ?" +
114                " AND   YKNO  = ?" ;
115
116        // GE56 のエラー情報を書き込むためのSQL文です。
117        private static final String GE56_ERRMSG =
118                "INSERT INTO GE56" +
119                "        ( FGJ,SYSTEM_ID,YKNO,ERRMSG,DYSET,DYUPD,USRSET,USRUPD,PGUPD )" +
120                " VALUES ( '1',?        ,?   ,?     ,?    ,?    ,?     ,?     ,?      )" ;
121
122        /** コネクションにアプリケーション情報を追記するかどうか指定 */
123        public static final boolean USE_DB_APPLICATION_INFO  = HybsSystem.sysBool( "USE_DB_APPLICATION_INFO" ) ;
124
125        // 3.8.7.0 (2006/12/15) アクセスログ取得の為,ApplicationInfoオブジェクトを設定
126        private final ApplicationInfo appInfo;
127        private final String DBID = HybsSystem.sys( "RESOURCE_DBID" );          // 5.5.5.1 (2012/08/07) リソース系DBID 付け忘れ対応
128
129        private final String USRSET ;
130        private final String PGUPD ;
131        private final String DMN_NAME ;         // 3.8.5.0 (2006/03/02)
132
133        private String systemId ;
134        private String ykno             ;
135        private String listid   ;
136        private String joken    ;
137        private String outdir   ;
138        private String outfile  ;
139        private String comments ;
140//      private String fgnoml   ;                       // 5.10.0.0 (2018/06/08) ADD 帳票エラーメールの改修
141        //private boolean fgnoml        ;               // 6.9.8.1 (2018/06/11) 帳票エラーメールの改修(メール不要フラグ=trueで不要、falseが必要) 7.4.4.0 (2021/06/30) Delete
142
143        /** ファンクション名    */
144        protected final DBFunctionName dbName = DBFunctionName.getDBName( ConnectionFactory.getDBName( DBID ) ); // 5.9.31.2 (2018/04/20)
145
146        /**
147         * ユーザーとプログラムIDを指定して、オブジェクトを構築します。
148         * このオブジェクトを構築した時刻を、DYSET、DYUPD にセットします。
149         * つまり、このオブジェクトで登録する一連のデータは、すべて同一時刻での登録になります。
150         *
151         * @og.rev 3.8.7.0 (2006/12/15) アクセスログ取得の為,ApplicationInfoオブジェクトを設定
152         *
153         * @param       usrset  ユーザー
154         * @param       prgupd  プログラムID
155         * @param       dmnName 更新デーモン名
156         */
157        public GE50Access( final String usrset, final String prgupd ,final String dmnName) {
158                USRSET   = substr( usrset, 10, "UNNONE" ) ;
159                PGUPD    = substr( prgupd, 10, "UNNONE" ) ;
160                DMN_NAME = substr( dmnName,50, "UNNONE" ) ;
161
162                // 3.8.7.0 (2006/12/15) アクセスログ取得の為,ApplicationInfoオブジェクトを設定
163                if( USE_DB_APPLICATION_INFO ) {
164                        appInfo = new ApplicationInfo();
165                        // ユーザーID,IPアドレス,ホスト名
166                        appInfo.setClientInfo( USRSET,HybsSystem.HOST_ADRS,HybsSystem.HOST_NAME );
167                        // 画面ID,操作,プログラムID
168                        appInfo.setModuleInfo( "GE50Access",null,DMN_NAME );
169                }
170                else {
171                        appInfo = null;
172                }
173        }
174
175        /**
176         * systemId をセットします。
177         *
178         * @param systemId システムID
179         */
180        public void setSystemId ( final String systemId ) { this.systemId = systemId; }
181
182        /**
183         * systemId を取得します。
184         *
185         * @return      システムID
186         */
187        public String getSystemId() { return systemId; }
188
189        /**
190         * listid をセットします。
191         *
192         * @param listid 帳票ID
193         */
194        public void setListId( final String listid ) { this.listid = listid; }
195
196        /**
197         * joken をセットします。
198         *
199         * @param joken 振分条件
200         */
201        public void setJoken( final String joken ) { this.joken = joken; }
202
203        /**
204         * outdir をセットします。
205         *
206         * @param outdir 出力DIR
207         */
208        public void setOutDir( final String outdir ) { this.outdir = outdir; }
209
210        /**
211         * outfile をセットします。
212         *
213         * @param outfile 出力ファイル
214         */
215        public void setOutFile( final String outfile ) { this.outfile = outfile; }
216
217        /**
218         * comments をセットします。
219         *
220         * @param comments コメント
221         */
222        public void setComments( final String comments ) { this.comments = comments; }
223
224        /**
225         * ykno をセットします。
226         *
227         * @param ykno 要求番号
228         */
229        public void setYkno( final String ykno ) { this.ykno = ykno; }
230
231        /**
232         * ykno を取得します。
233         *
234         * @return      要求番号
235         */
236        public String getYkno() { return ykno; }
237
238        // /**
239        // * 帳票エラー時のメール不要フラグをセットします(初期値=false:送信する)。
240        // *
241        // * 帳票エラー時のメール送信は帳票IDの正規表現でコントロール可能でしたが、
242        // * ID単位に未送信フラグを持たせてコントロール可能にします。
243        // * 帳票の動作にDBのカラム追加が伴うためバージョンを5.10系に上げます。
244        // * エラーメールが不要の場合は、"true", もしくは、1文字の場合のみ、"0" 以外の場合が、
245        // * メール不要として、エラーメールを送信しません。
246        // *
247        // * @og.rev 5.10.0.0 (2018/06/08) ADD
248        // * @og.rev 6.9.8.1 (2018/06/11) 帳票エラーメールの改修(メール不要フラグ=trueで不要、falseが必要)
249        // * @og.rev 7.3.0.0 (2021/01/06) 紛らわしい名前のメソッド(setFgNoMl → setFgnoml)
250        // * @og.rev 7.4.4.0 (2021/06/30) openGionV8事前準備(GE54.FGNOML廃止)
251        // *
252        // * @param flag メール不要フラグ
253        // */
254//      public void setFgNoMl( final String fgnoml ) { this.fgnoml = fgnoml; }
255//      public void setFgNoMl( final String flag ) {
256        // 7.4.4.0 (2021/06/30) Delete
257        // public void setFgnoml( final String flag ) {
258        //      fgnoml = StringUtil.nval( flag,fgnoml );                // true,TRUE,0以外の1文字の場合、true、それ以外は、初期値
259        // }
260
261        /**
262         * 新たな要求番号を採番します(シーケンスより取得)
263         * 採番後、内部の要求番号(ykno)もこの値に再セットされます。
264         *
265         * @og.rev 3.8.7.0 (2006/12/15) アクセスログ取得の為,ApplicationInfoオブジェクトを設定
266         * @og.rev 5.5.5.1 (2012/08/07) リソース系DBID 付け忘れ対策
267         * @og.rev 5.9.31.2 (2018/04/20) シーケンスの取り方を変更
268         * @og.rev 7.0.6.4 (2019/11/29) TransactionRealのclose漏れ対応
269         *
270         * @return      要求番号
271         */
272        public String makeYkno() {
273//              try {
274//      //              final String[][] vals = DBUtil.dbExecute( GE50_SEQ,null,appInfo, DBID );        // 5.5.5.1 (2012/08/07)
275//      //              ykno = vals[0][0].trim();
276//                      final Transaction tran = new TransactionReal( appInfo );                                        // 5.9.31.2 (2018/04/20)f
277                try( Transaction tran = new TransactionReal( appInfo ) ) {                              // 7.0.6.4 (2019/11/29) try-with-resources文
278                        ykno = Integer.toString( dbName.getSequence( GE50_SEQ, tran, DBID ) );
279                }
280                catch( final RuntimeException ex ) {
281                        final String errMsg = "要求番号の採番に失敗しました。" + CR
282                                                + " SQL=" + GE50_SEQ + CR ;             // 7.0.6.4 (2019/11/29) ex.getMessage は、追記しない。
283//                                              + ex.getMessage();                              // 5.1.8.0 (2010/07/01) errMsg 修正
284                        LogWriter.log( errMsg );
285                        LogWriter.log( ex );
286
287                        throw new HybsSystemException( errMsg,ex );             // 7.0.6.4 (2019/11/29)
288                }
289                return ykno ;
290        }
291
292        /**
293         * 帳票要求テーブルにデータをセットします。
294         * 内部変数にセットされている値を利用して、データ登録を行います。
295         * 繰返し登録したい場合は、変更する値のみを、内部変数にセットしてから、
296         * このメソッドを呼び出してください。
297         * なお、完成フラグ(fgkan)は、内部変数に持っていないため、外部から指定してください。
298         *
299         * @og.rev 3.8.7.0 (2006/12/15) アクセスログ取得の為,ApplicationInfoオブジェクトを設定
300         * @og.rev 5.5.5.1 (2012/08/07) リソース系DBID 付け忘れ対策
301         * @og.rev 6.4.2.0 (2016/01/29) DateSet.getDate( String ) を利用するように修正します。
302         *
303         * @param fgkan 完成フラグ
304         */
305        public void insertGE50( final String fgkan ) {
306                final String DYSET = DateSet.getDate( "yyyyMMddHHmmss" ) ;              // 6.4.2.0 (2016/01/29)
307
308                // GE50_INSERT の引数
309                final String[] args = new String[] {
310                                                        systemId,                                                               // SYSTEM_ID
311                                                        ykno ,                                                                  // YKNO
312                                                        StringUtil.nval( listid,"NO_LIST" ),    // LISTID
313                                                        StringUtil.nval( joken,"NO_JOKEN" ),    // JOKEN
314                                                        fgkan,                                                                  // FGKAN
315                                                        StringUtil.nval( outdir,"" ),                   // OUT_DIR
316                                                        StringUtil.nval( outfile,"" ),                  // OUT_FILE
317                                                        StringUtil.nval( comments,"" ),                 // COMMENTS
318                                                        DYSET,                                  // DYSET
319                                                        DYSET,                                  // DYUPD
320                                                        USRSET,                                 // USRSET
321                                                        USRSET,                                 // USRUPD
322                                                        PGUPD,                                  // PGUPD
323                                                        DMN_NAME,                               // DMN_NAME
324                                                        HybsSystem.HOST_NAME    // DMN_HOST
325                                                } ;
326
327                try {
328                        DBUtil.dbExecute( GE50_INSERT,args,appInfo, DBID );     // 5.5.5.1 (2012/08/07)
329                }
330                catch( final RuntimeException ex ) {
331                        final String errMsg = "帳票要求テーブルデータセットに失敗しました。" + CR
332                                                + " SQL=" + GE50_INSERT + CR
333                                                + ex.getMessage();                                                      // 5.1.8.0 (2010/07/01) errMsg 修正
334                        LogWriter.log( errMsg );
335                        LogWriter.log( ex );
336                }
337        }
338
339        /**
340         * 処理終了後に完成フラグを設定します。
341         * 内部変数にセットされている、systemId と ykno を利用して、データ登録を行います。
342         * なお、完成フラグ(fgkan)は、内部変数に持っていないため、外部から指定してください。
343         *
344         * @og.rev 3.8.0.4 (2005/08/08) PGUPDを追加
345         * @og.rev 3.8.7.0 (2006/12/15) アクセスログ取得の為,ApplicationInfoオブジェクトを設定
346         * @og.rev 5.5.5.1 (2012/08/07) リソース系DBID 付け忘れ対策
347         * @og.rev 6.4.2.0 (2016/01/29) DateSet.getDate( String ) を利用するように修正します。
348         *
349         * @param fgkan 完成フラグ
350         */
351        public void updateGE50( final String fgkan ) {
352                final String DYSET = DateSet.getDate( "yyyyMMddHHmmss" ) ;              // 6.4.2.0 (2016/01/29)
353
354                final String[] args = new String[] {
355                                                        fgkan,                                          // FGKAN
356                                                        DYSET,                                          // DYUPD
357                                                        DMN_NAME,                                       // DMN_NAME
358                                                        HybsSystem.HOST_NAME,           // DMN_HOST
359                                                        systemId,                                       // SYSTEM_ID
360                                                        ykno                                            // YKNO
361                                                } ;
362
363                try {
364                        DBUtil.dbExecute( GE50_UPDATE,args,appInfo, DBID );     // 5.5.5.1 (2012/08/07)
365                }
366                catch( final RuntimeException ex ) {
367                        final String errMsg = "完成フラグ設定に失敗しました。" + CR
368                                                + " SQL=" + GE50_UPDATE + CR
369                                                + ex.getMessage();                                                      // 5.1.8.0 (2010/07/01) errMsg 修正
370                        LogWriter.log( errMsg );
371                        LogWriter.log( ex );
372                }
373        }
374
375        /**
376         * エラー発生時に、エラーメッセージを登録します。
377         * 内部変数にセットされている、systemId と ykno を利用して、データ登録を行います。
378         *
379         * @og.rev 3.8.5.3 (2006/06/30) エラーメッセージを 4000Byte以下にする。
380         * @og.rev 3.8.7.0 (2006/12/15) アクセスログ取得の為,ApplicationInfoオブジェクトを設定
381         * @og.rev 5.5.5.1 (2012/08/07) リソース系DBID 付け忘れ対策
382         * @og.rev 6.4.2.0 (2016/01/29) DateSet.getDate( String ) を利用するように修正します。
383         * @og.rev 5.10.0.0 (2018/06/08) メール不要フラグ(fgNoMl)の判定を追加。
384         * @og.rev 6.9.8.1 (2018/06/11) 帳票エラーメールの改修(メール不要フラグ=trueで不要、falseが必要)
385         * @og.rev 7.4.4.0 (2021/06/30) openGionV8事前準備(GE54.FGNOML廃止)
386         *
387         * @param       inErrMsg        エラーメッセージ
388         */
389        public void insertErrorGE56( final String inErrMsg ) {
390
391                String outErrMsg = (inErrMsg == null) ? "" : inErrMsg.trim();
392                if( outErrMsg.length() > 2000 ) {
393                        final String code = HybsSystem.sys( "DB_ENCODE" );
394                        final byte[] byteValue = StringUtil.makeByte( outErrMsg,code );
395                        if( byteValue.length > 4000 ) {
396                                outErrMsg = StringUtil.makeString( byteValue,0,4000,code );
397                        }
398                }
399                final String DYSET = DateSet.getDate( "yyyyMMddHHmmss" ) ;              // 6.4.2.0 (2016/01/29)
400
401                final String[] args = new String[] {
402                                                                systemId,
403                                                                ykno,
404                                                                outErrMsg ,             // ERRMSG
405                                                                DYSET,                  // DYSET
406                                                                DYSET,                  // DYUPD
407                                                                USRSET,                 // USRSET
408                                                                USRSET,                 // USRUPD
409                                                                PGUPD };                // PGUPD
410
411                try {
412                        DBUtil.dbExecute( GE56_ERRMSG,args,appInfo, DBID );     // 5.5.5.1 (2012/08/07)
413                }
414                catch( final RuntimeException ex ) {
415                        final String errMsg = "エラーメッセージテーブルセットに失敗しました。" + CR
416                                                + " SYSTEM_ID=[" + systemId + "] , YKNO=[" + ykno + "]" + CR
417                                                + " SQL=" + GE56_ERRMSG + CR
418                                                + ex.getMessage();                      // 5.1.8.0 (2010/07/01) errMsg 修正
419                        LogWriter.log( errMsg );
420                        LogWriter.log( ex );
421                }
422
423//              sendMail( outErrMsg );                  // 3.8.0.4 (2005/08/08)
424                // 5.10.0.0 (2018/06/08) MOD メール不要フラグが1以外の場合、メールを送信します
425//              if( !"1".equals(fgnoml) ) {
426                // 6.9.8.1 (2018/06/11) 帳票エラーメールの改修(メール不要フラグ=trueで不要、falseが必要)
427                // 7.4.4.0 (2021/06/30) Delete
428        //      if( ! fgnoml ) {
429        //              sendMail( outErrMsg );          // 3.8.0.4 (2005/08/08)
430        //      }
431        }
432
433        /**
434         * substring を補完する簡易メソッド
435         *
436         * substring で、文字をカットする場合、文字列長が、カットする文字数より
437         * 長い必要があります。ここでは、最大長に制限をかけることが目的なので
438         * 入力文字長が指定文字数より小さいケースがあります。そのチェックを
439         * 簡易的に実行できるように、このメソッドで処理します。
440         *
441         * @param       inStr   入力文字
442         * @param       len             最大文字数
443         * @param       defVal  NULL 時の初期値
444         *
445         * @return 指定の文字数でカットされた新しい文字列
446         */
447        private String substr( final String inStr, final int len, final String defVal ) {
448                return inStr == null
449                                        ? defVal
450                                        : inStr.length() > len
451                                                ? inStr.substring( 0,len )
452                                                : inStr ;
453        }
454
455        // /**
456        // * エラー情報のメール送信を行います。
457        // * エラーメールは、システムパラメータ の COMMON_MAIL_SERVER(メールサーバー)と
458        // * ERROR_MAIL_FROM_USER(エラーメール発信元)と、ERROR_MAIL_TO_USERS(エラーメール受信者)
459        // * がすべて設定されている場合に、送信されます。
460        // *
461        // * @og.rev 3.8.0.4 (2005/08/08) 新規追加
462        // * @og.rev 5.7.0.4 (2013/11/29) listIdの絞込み
463        // * @og.rev 7.4.4.0 (2021/06/30) openGionV8事前準備(GE54.FGNOML廃止)
464        // *
465        // * @param     inErrMsg        エラーメッセージ
466        // */
467        // private void sendMail( final String inErrMsg ) {
468
469        //      final String   host = HybsSystem.sys( "COMMON_MAIL_SERVER" );
470        //      final String   from = HybsSystem.sys( "ERROR_MAIL_FROM_USER" );
471        //      final String[] to = StringUtil.csv2Array( HybsSystem.sys( "ERROR_MAIL_TO_USERS" ) );
472        //      final String   match_txt = HybsSystem.sys( "REPORT_ERRMAIL_REGEX" );    // 5.7.0.4 (2013/11/29)
473
474        //      if( host != null && from != null && to.length > 0 ) {
475        //              if( match_txt == null || match_txt.isEmpty()
476        //                              || listid == null || listid.isEmpty()
477        //                              || listid.matches( match_txt ) ){                                                       // 5.7.0.4 (2013/11/29)
478        //                      // 3.8.5.0 (2006/03/02) DMN_NAME、DMN_HOST 追加
479        //                      // 5.7.0.4 (2013/11/29) listid追加
480        //                      final String subject = "SYSTEM_ID=[" + systemId + "] , YKNO=[" + ykno + "] , "
481        //                                                 + "DMN_NAME=[" + DMN_NAME + "] , DMN_HOST=[" + HybsSystem.HOST_NAME + "]"
482        //                                                 + "LISTID=[" + listid +"]";
483        //                      try {
484        //                              final MailTX tx = new MailTX( host );
485//      //                              tx.setHost( host );
486        //                              tx.setFrom( from );
487        //                              tx.setTo( to );
488        //                              tx.setSubject( "帳票エラー:" + subject );
489        //                              tx.setMessage( inErrMsg );
490        //                              tx.sendmail();
491        //                      }
492        //                      catch( final Throwable ex ) {
493        //                              final String errMsg = "エラー時メール送信に失敗しました。" + CR
494        //                                                      + " SUBJECT:" + subject                                 + CR
495        //                                                      + " HOST:" + host                                               + CR
496        //                                                      + " FROM:" + from                                               + CR
497        //                                                      + " TO:"   + Arrays.toString( to )              + CR
498        //                                                      + ex.getMessage();              // 5.1.8.0 (2010/07/01) errMsg 修正
499        //                              LogWriter.log( errMsg );
500        //                              LogWriter.log( ex );
501        //                      }
502        //              }
503        //      }
504        // }
505}