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 }