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.plugin.daemon; 017 018import org.opengion.hayabusa.common.HybsSystem; 019import org.opengion.hayabusa.report.GE50Access; 020import org.opengion.fukurou.util.LogWriter; 021import org.opengion.fukurou.util.StringUtil; 022import org.opengion.fukurou.util.HybsTimerTask; 023 024import org.opengion.fukurou.mail.MailReceiveListener ; 025import org.opengion.fukurou.mail.MailRX ; 026 027import java.util.Date; 028 029/** 030 * 【メールデーモン】メールサーバーを監視して、EXCELファイルのDB登録処理のデーモンです。 031 * 指定の条件でメールサーバーを監視し、添付のEXCELファイルを取り出します。 032 * 添付ファイルは、EXCEL取り込みインターフェースに則り、要求番号.xls にリネームして 033 * 所定のディレクトリ(EXCEL_IN_FILE_URLで定義)にセーブし、帳票要求テーブルに登録します。(GE50) 034 * それ以降の処理は、EXCEL帳票デーモン以下の共通処理で処理されます。 035 * EXCEL取り込み処理は、このメール自動取り込みと、ファイルアップロードの方式を 036 * サポートしています。 037 * 038 * @og.rev 3.8.0.0 (2005/06/07) 新規追加 039 * @og.rev 4.3.4.4 (2009/01/01) プラグイン化 040 * @og.group デーモン 041 * 042 * @version 4.0 043 * @author Kazuhiko Hasegawa 044 * @since JDK5.0, 045 */ 046public class Daemon_MailReceive extends HybsTimerTask { 047 //* このプログラムのVERSION文字列を設定します。 {@value} */ 048 private static final String VERSION = "5.3.0.0 (2010/12/01)" ; 049 050 private int loopCnt = 0; 051 private static final int LOOP_COUNTER = 24; // カウンタを24回に設定 052 053 private MailRX mailRX = null; 054 055 /** 056 * このタイマータスクによって初期化されるアクションです。 057 * パラメータを使用した初期化を行います。 058 * 059 */ 060 @Override 061 public void initDaemon() { 062 063 String host = StringUtil.nval( getValue( "HOST" ) , HybsSystem.sys( "COMMON_MAIL_SERVER" ) ); 064 String user = StringUtil.nval( getValue( "USER" ) , HybsSystem.sys( "MAIL_DAEMON_DEFAULT_USER" ) ); 065 String passwd = StringUtil.nval( getValue( "PASSWD" ) , HybsSystem.sys( "MAIL_DAEMON_DEFAULT_PASS" ) ); 066 067 mailRX = new MailRX(); 068 mailRX.setHost( host ); 069 mailRX.setUser( user ); 070 mailRX.setPasswd( passwd ); 071 mailRX.setDelete( true ); 072 073 // 現段階では、Subjectによるメール取得振分は行いません。 074 // 条件に合わないエラーメールを取り出す機会がなくなるためです。 075 // String subject = getValue( "SUBJECT" ); 076 // if( subject != null && subject.length() > 0 ) { 077 // HybsEntry entry = new HybsEntry( "Subject",subject ); 078 // mailRX.addMatchTerm( entry ); 079 // } 080 081 String receiveListener = getValue( "RECEIVE_LISTENER" ); 082 MailReceiveListener listener = (MailReceiveListener)HybsSystem.newInstance( receiveListener ); 083 mailRX.setMailReceiveListener( listener ); 084 } 085 086 /** 087 * タイマータスクのデーモン処理の開始ポイントです。 088 * 089 * @og.rev 5.3.0.0 (2010/12/01) エラーハンドリングを修正 090 * 091 */ 092 @Override 093 protected void startDaemon() { 094 if( loopCnt % LOOP_COUNTER == 0 ) { 095 loopCnt = 1; 096 System.out.println(); 097 System.out.print( toString() + " " + new Date() + " " ); 098 } 099 else { 100 System.out.print( "." ); 101 loopCnt++ ; 102 } 103 104 try { 105 mailRX.start(); 106 } 107 108 // 5.3.0.0 (2010/12/01) エラーハンドリングを修正 109 catch( Throwable ex ) { 110 String errMsg = StringUtil.stringStackTrace( ex ) ; 111 System.out.println( errMsg ); 112 LogWriter.log( errMsg ); 113 114 GE50Access ge50 = new GE50Access( "CYYYYY","M_Daemon","MailReceive" ); 115 116 ge50.setSystemId( "ERR" ); 117 ge50.makeYkno(); 118 119 ge50.insertErrorGE56( errMsg ); 120 ge50.insertGE50( GE50Access.FG_ERR1 ); 121 122 } 123 } 124}