OSDN Git Service

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