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  }