View Javadoc

    1   package com.ozacc.mail.mock;
    2
    3   import java.util.ArrayList;
    4   import java.util.List;
    5
    6   import javax.mail.internet.MimeMessage;
    7
    8   import org.apache.commons.logging.Log;
    9   import org.apache.commons.logging.LogFactory;
    10
    11  import com.ozacc.mail.MailException;
    12  import com.ozacc.mail.NotConnectedException;
    13  import com.ozacc.mail.fetch.FetchMailPro;
    14  import com.ozacc.mail.fetch.ReceivedMail;
    15
    16  /***
    17   * FetchMailProImplクラスのMock。
    18   *
    19   * @since 1.2
    20   * @author Tomohiro Otsuka
    21   * @version $Id: MockFetchMailPro.java,v 1.1.2.2 2005/04/10 05:22:34 otsuka Exp $
    22   */
    23  public class MockFetchMailPro implements FetchMailPro {
    24
    25  	private static Log log = LogFactory.getLog(MockFetchMailPro.class);
    26
    27  	/*** デフォルトのSMTPサーバ。「localhost」 */
    28  	public static final String DEFAULT_HOST = "localhost";
    29
    30  	/*** デフォルトのプロトコル。「pop3」 */
    31  	public static final String DEFAULT_PROTOCOL = "pop3";
    32
    33  	/***
    34  	 * デフォルトのポート。「-1」<br>
    35  	 * -1はプロトコルに応じた適切なポートを設定する特別な値。
    36  	 */
    37  	public static final int DEFAULT_PORT = -1;
    38
    39  	private static final String INBOX_NAME = "INBOX";
    40
    41  	private String host = DEFAULT_HOST;
    42
    43  	private String protocol = DEFAULT_PROTOCOL;
    44
    45  	private int port = DEFAULT_PORT;
    46
    47  	private String username;
    48
    49  	private String password;
    50
    51  	private boolean javaMailLogEnabled;
    52
    53  	private boolean connected = false;
    54
    55  	private List receivedMails;
    56
    57  	/***
    58  	 * コンストラクタ。
    59  	 */
    60  	public MockFetchMailPro() {
    61  		super();
    62  		receivedMails = new ArrayList();
    63  	}
    64
    65  	/***
    66  	 * @see com.ozacc.mail.fetch.FetchMailPro#connect()
    67  	 */
    68  	public synchronized void connect() throws MailException {
    69  		if (isConnected()) {
    70  			log.warn("既にサーバ[" + host + "]に接続されています。再接続するには先に接続を切断する必要があります。");
    71  			return;
    72  		}
    73
    74  		log.debug(protocol.toUpperCase() + "サーバ[" + host + "]に接続するフリ。");
    75  		connected = true;
    76  		log.info(protocol.toUpperCase() + "サーバ[" + host + "]に接続したフリ。");
    77  	}
    78
    79  	/***
    80  	 * @see com.ozacc.mail.fetch.FetchMailPro#disconnect()
    81  	 */
    82  	public synchronized void disconnect() throws MailException {
    83  		if (isConnected()) {
    84  			log.debug(protocol.toUpperCase() + "サーバ[" + host + "]との接続を切断するフリ。");
    85  			connected = false;
    86  			log.debug(protocol.toUpperCase() + "サーバ[" + host + "]との接続を切断したフリ。");
    87  		}
    88  	}
    89
    90  	/***
    91  	 * <code>MockFetchMailPro</code>の<code>getMails()</code>メソッドが返す
    92  	 * <code>ReceivedMail</code>インスタンスをセットします。
    93  	 *
    94  	 * @param mail <code>getMails()</code>メソッドが返す<code>ReceivedMail</code>インスタンス
    95  	 */
    96  	public void setupGetMails(ReceivedMail mail) {
    97  		receivedMails.add(mail);
    98  	}
    99
    100 	/***
    101 	 * <code>MockFetchMailPro</code>の<code>getMails()</code>メソッドが返す
    102 	 * <code>ReceivedMail</code>インスタンスをセットします。
    103 	 *
    104 	 * @param mails <code>getMails()</code>メソッドが返す<code>ReceivedMail</code>インスタンス配列
    105 	 */
    106 	public void setupGetMails(ReceivedMail[] mails) {
    107 		for (int i = 0; i < mails.length; i++) {
    108 			ReceivedMail mail = mails[i];
    109 			setupGetMails(mail);
    110 		}
    111 	}
    112
    113 	/***
    114 	 * @see com.ozacc.mail.fetch.FetchMailPro#getMailCount()
    115 	 */
    116 	public int getMailCount() throws MailException {
    117 		return receivedMails.size();
    118 	}
    119
    120 	/***
    121 	 * @see com.ozacc.mail.fetch.FetchMailPro#getMail(int)
    122 	 */
    123 	public synchronized ReceivedMail getMail(int num) throws MailException {
    124 		return getMail(num, false);
    125 	}
    126
    127 	/***
    128 	 * @see com.ozacc.mail.fetch.FetchMailPro#getMail(int, boolean)
    129 	 */
    130 	public synchronized ReceivedMail getMail(int num, boolean delete) throws MailException {
    131 		if (isConnected()) {
    132 			if (delete) {
    133 				return (ReceivedMail)receivedMails.remove(num - 1);
    134 			} else {
    135 				return (ReceivedMail)receivedMails.get(num - 1);
    136 			}
    137 		} else {
    138 			throw new NotConnectedException(protocol.toUpperCase() + "サーバ[" + host + "]に接続されていません。");
    139 		}
    140 	}
    141
    142 	/***
    143 	 * @see com.ozacc.mail.fetch.FetchMailPro#getMails(boolean)
    144 	 */
    145 	public synchronized ReceivedMail[] getMails(boolean delete) throws MailException {
    146 		if (isConnected()) {
    147 			ReceivedMail[] results = (ReceivedMail[])receivedMails
    148 					.toArray(new ReceivedMail[receivedMails.size()]);
    149 			if (delete) {
    150 				receivedMails.clear();
    151 			}
    152 			return results;
    153 		} else {
    154 			throw new NotConnectedException(protocol.toUpperCase() + "サーバ[" + host + "]に接続されていません。");
    155 		}
    156 	}
    157
    158 	/***
    159 	 * @see com.ozacc.mail.fetch.FetchMailPro#getMessage(int)
    160 	 */
    161 	public MimeMessage getMessage(int num) throws MailException {
    162 		throw new UnsupportedOperationException("申し訳ございません。MockFetchMailProでは、このメソッドをサポートしていません。");
    163 	}
    164
    165 	/***
    166 	 * @see com.ozacc.mail.fetch.FetchMailPro#getMessages(boolean)
    167 	 */
    168 	public MimeMessage[] getMessages(boolean delete) throws MailException {
    169 		throw new UnsupportedOperationException("申し訳ございません。MockFetchMailProでは、このメソッドをサポートしていません。");
    170 	}
    171
    172 	/***
    173 	 * @see com.ozacc.mail.fetch.FetchMailPro#changeFolder(java.lang.String)
    174 	 */
    175 	public synchronized void changeFolder(String folderName) throws MailException {
    176 		if (!isConnected()) {
    177 			log.warn("メールサーバに接続されていません。");
    178 			return;
    179 		}
    180
    181 		log.debug("メッセージフォルダ[" + folderName + "]をオープンするフリ。");
    182 		log.debug("メッセージフォルダ[" + folderName + "]をオープンしたフリ。");
    183 	}
    184
    185 	/***
    186 	 * @see com.ozacc.mail.fetch.FetchMailPro#isConnected()
    187 	 */
    188 	public boolean isConnected() {
    189 		return connected;
    190 	}
    191
    192 	/***
    193 	 * @return Returns the host.
    194 	 */
    195 	public String getHost() {
    196 		return host;
    197 	}
    198
    199 	/***
    200 	 * @param host The host to set.
    201 	 */
    202 	public void setHost(String host) {
    203 		this.host = host;
    204 	}
    205
    206 	/***
    207 	 * @return Returns the javaMailLogEnabled.
    208 	 */
    209 	public boolean isJavaMailLogEnabled() {
    210 		return javaMailLogEnabled;
    211 	}
    212
    213 	/***
    214 	 * @param javaMailLogEnabled The javaMailLogEnabled to set.
    215 	 */
    216 	public void setJavaMailLogEnabled(boolean javaMailLogEnabled) {
    217 		this.javaMailLogEnabled = javaMailLogEnabled;
    218 	}
    219
    220 	/***
    221 	 * @return Returns the password.
    222 	 */
    223 	public String getPassword() {
    224 		return password;
    225 	}
    226
    227 	/***
    228 	 * @param password The password to set.
    229 	 */
    230 	public void setPassword(String password) {
    231 		this.password = password;
    232 	}
    233
    234 	/***
    235 	 * @return Returns the port.
    236 	 */
    237 	public int getPort() {
    238 		return port;
    239 	}
    240
    241 	/***
    242 	 * @param port The port to set.
    243 	 */
    244 	public void setPort(int port) {
    245 		this.port = port;
    246 	}
    247
    248 	/***
    249 	 * @return Returns the protocol.
    250 	 */
    251 	public String getProtocol() {
    252 		return protocol;
    253 	}
    254
    255 	/***
    256 	 * @param protocol The protocol to set.
    257 	 */
    258 	public void setProtocol(String protocol) {
    259 		this.protocol = protocol;
    260 	}
    261
    262 	/***
    263 	 * @return Returns the username.
    264 	 */
    265 	public String getUsername() {
    266 		return username;
    267 	}
    268
    269 	/***
    270 	 * @param username The username to set.
    271 	 */
    272 	public void setUsername(String username) {
    273 		this.username = username;
    274 	}
    275
    276 }