View Javadoc

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