OSDN Git Service

文字コードを UTF-8、改行コードをLFに統一
[spring-ext/ozacc-mail.git] / src / main / java / com / ozacc / mail / spring / MailetRunnerJob.java
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 }