View Javadoc

    1   package com.ozacc.mail.spring;
    2
    3   import java.util.ArrayList;
    4   import java.util.Iterator;
    5   import java.util.List;
    6
    7   import org.quartz.JobExecutionContext;
    8   import org.quartz.JobExecutionException;
    9   import org.springframework.scheduling.quartz.QuartzJobBean;
    10
    11  import com.ozacc.mail.fetch.FetchMailPro;
    12  import com.ozacc.mail.fetch.ReceivedMail;
    13  import com.ozacc.mail.mailet.MailetWrapper;
    14
    15  /***
    16   * Spring FrameworkのQuartz実行用MailetRunner。
    17   *
    18   * @since 1.2
    19   * @author Tomohiro Otsuka
    20   * @version $Id: MailetRunnerJob.java,v 1.1.2.3 2005/01/23 06:47:16 otsuka Exp $
    21   */
    22  public class MailetRunnerJob extends QuartzJobBean {
    23
    24  	private List mailetWrapperList;
    25
    26  	private FetchMailPro fetchMailPro;
    27
    28  	/***
    29  	 * コンストラクタ。
    30  	 */
    31  	public MailetRunnerJob() {
    32  		mailetWrapperList = new ArrayList();
    33  	}
    34
    35  	/***
    36  	 * メール受信とMailetの起動を行います。
    37  	 *
    38  	 * @see org.springframework.scheduling.quartz.QuartzJobBean#executeInternal(org.quartz.JobExecutionContext)
    39  	 */
    40  	protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
    41  		fetchMailPro.connect();
    42  		try {
    43  			int count = fetchMailPro.getMailCount();
    44  			for (int i = 1; i <= count; i++) {
    45  				ReceivedMail mail = fetchMailPro.getMail(i);
    46  				processMail(mail);
    47  			}
    48  		} finally {
    49  			if (fetchMailPro.isConnected()) {
    50  				fetchMailPro.disconnect();
    51  			}
    52  		}
    53  	}
    54
    55  	/***
    56  	 * 指定された受信メールに対してMailetを適用します。
    57  	 *
    58  	 * @param mail MailetUnitに渡す受信メール
    59  	 */
    60  	private void processMail(ReceivedMail mail) {
    61  		for (Iterator itr = mailetWrapperList.iterator(); itr.hasNext();) {
    62  			MailetWrapper mailetWrapper = (MailetWrapper)itr.next();
    63  			mailetWrapper.execute(mail);
    64  		}
    65  	}
    66
    67  	/***
    68  	 * メールの受信に使用するFetchMailProインターフェースの実装インスタンスをセットします。
    69  	 *
    70  	 * @param fetchMailPro FetchMailProインターフェースの実装インスタンス
    71  	 */
    72  	public void setFetchMailPro(FetchMailPro fetchMailPro) {
    73  		this.fetchMailPro = fetchMailPro;
    74  	}
    75
    76  	/***
    77  	 * 実行するMailetのMailetWrapperリストをセットします。
    78  	 *
    79  	 * @param mailetWrapperList 実行するMailetのMailetWrapperリスト
    80  	 */
    81  	public void setMailetWrapperList(List mailetWrapperList) {
    82  		this.mailetWrapperList = mailetWrapperList;
    83  	}
    84
    85  }