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 }