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// catch( Throwable ex ) { 108// GE50Access GE50 = new GE50Access( "CYYYYY","M_Daemon","MailReceive" ); 109// 110// GE50.setSystemId( "ERR" ); 111// GE50.makeYkno(); 112// 113// GE50.insertGE50( GE50Access.FG_ERR1 ); 114// 115// String errMsg = StringUtil.stringStackTrace( ex ); 116// GE50.insertErrorGE56( errMsg ); 117// 118// LogWriter.log( errMsg ); 119// } 120 // 5.3.0.0 (2010/12/01) エラーハンドリングを修正 121 catch( Throwable ex ) { 122 String errMsg = StringUtil.stringStackTrace( ex ) ; 123 System.out.println( errMsg ); 124 LogWriter.log( errMsg ); 125 126 GE50Access ge50 = new GE50Access( "CYYYYY","M_Daemon","MailReceive" ); 127 128 ge50.setSystemId( "ERR" ); 129 ge50.makeYkno(); 130 131 ge50.insertErrorGE56( errMsg ); 132 ge50.insertGE50( GE50Access.FG_ERR1 ); 133 134 } 135 } 136}