OSDN Git Service

ディレクトリ構成を Maven 2 標準にすることで pom.xml を簡略化
[spring-ext/ozacc-mail.git] / src / java / com / ozacc / mail / fetch / impl / FetchMailProImpl.java
diff --git a/src/java/com/ozacc/mail/fetch/impl/FetchMailProImpl.java b/src/java/com/ozacc/mail/fetch/impl/FetchMailProImpl.java
deleted file mode 100755 (executable)
index bb862ec..0000000
+++ /dev/null
@@ -1,415 +0,0 @@
-package com.ozacc.mail.fetch.impl;\r
-\r
-import java.util.Properties;\r
-\r
-import javax.mail.AuthenticationFailedException;\r
-import javax.mail.Flags;\r
-import javax.mail.Folder;\r
-import javax.mail.Message;\r
-import javax.mail.MessagingException;\r
-import javax.mail.NoSuchProviderException;\r
-import javax.mail.Session;\r
-import javax.mail.Store;\r
-import javax.mail.internet.MimeMessage;\r
-\r
-import org.apache.commons.logging.Log;\r
-import org.apache.commons.logging.LogFactory;\r
-\r
-import com.ozacc.mail.MailAuthenticationException;\r
-import com.ozacc.mail.MailException;\r
-import com.ozacc.mail.NotConnectedException;\r
-import com.ozacc.mail.fetch.FetchMailPro;\r
-import com.ozacc.mail.fetch.MailConverter;\r
-import com.ozacc.mail.fetch.MailFetchException;\r
-import com.ozacc.mail.fetch.ReceivedMail;\r
-\r
-/**\r
- * <code>FetchMail</code>インターフェースの実装クラス。\r
- * <p>\r
- * このクラスのインスタンスは、インスタンス変数を用いて状態を保持するため、\r
- * ステートレスではありません。ステートフルです。\r
- * \r
- * @since 1.2\r
- * @author Tomohiro Otsuka\r
- * @author gaku\r
- * @version $Id: FetchMailProImpl.java,v 1.1.2.13 2005/04/10 05:22:24 otsuka Exp $\r
- */\r
-public class FetchMailProImpl implements FetchMailPro {\r
-\r
-       private static Log log = LogFactory.getLog(FetchMailProImpl.class);\r
-\r
-       /** デフォルトのSMTPサーバ。「localhost」 */\r
-       public static final String DEFAULT_HOST = "localhost";\r
-\r
-       /** デフォルトのプロトコル。「pop3」 */\r
-       public static final String DEFAULT_PROTOCOL = "pop3";\r
-\r
-       /**\r
-        * デフォルトのポート。「-1」<br>\r
-        * -1はプロトコルに応じた適切なポートを設定する特別な値。\r
-        */\r
-       public static final int DEFAULT_PORT = -1;\r
-\r
-       private static final String INBOX_NAME = "INBOX";\r
-\r
-       private String host = DEFAULT_HOST;\r
-\r
-       private String protocol = DEFAULT_PROTOCOL;\r
-\r
-       private int port = DEFAULT_PORT;\r
-\r
-       private String username;\r
-\r
-       private String password;\r
-\r
-       private boolean javaMailLogEnabled;\r
-\r
-       private Store store;\r
-\r
-       private Folder currentFolder;\r
-\r
-       /** MailConver の実装インスタンス。 */\r
-       private MailConverter mailConverter = new MailConverterImpl();\r
-\r
-       /**\r
-        * コンストラクタ。\r
-        */\r
-       public FetchMailProImpl() {\r
-               System.setProperty("mail.mime.multipart.ignoremissingendboundary", "true");\r
-       }\r
-\r
-       /**\r
-        * @see com.ozacc.mail.fetch.FetchMailPro#connect()\r
-        */\r
-       public synchronized void connect() throws MailException {\r
-               if (isConnected()) {\r
-                       log.warn("既にサーバ[" + host + "]に接続されています。再接続するには先に接続を切断する必要があります。");\r
-                       return;\r
-               }\r
-\r
-               log.debug(protocol.toUpperCase() + "サーバ[" + host + "]に接続します。");\r
-               Session session = Session.getInstance(createProperties(), null);\r
-               if (javaMailLogEnabled) {\r
-                       session.setDebug(true);\r
-               }\r
-               try {\r
-                       store = session.getStore(protocol);\r
-                       store.connect(host, port, username, password);\r
-               } catch (NoSuchProviderException e) {\r
-                       log.error("指定されたプロトコル[" + protocol + "]はサポートされていません。", e);\r
-                       throw new MailException("指定されたプロトコル[" + protocol + "]はサポートされていません。", e);\r
-               } catch (AuthenticationFailedException e) {\r
-                       log.error(protocol.toUpperCase() + "サーバ[" + host + "]への接続認証に失敗しました。", e);\r
-                       throw new MailAuthenticationException(protocol.toUpperCase() + "サーバ[" + host\r
-                                       + "]への接続認証に失敗しました。", e);\r
-               } catch (MessagingException e) {\r
-                       log.error(protocol.toUpperCase() + "サーバ[" + host + "]への接続に失敗しました。", e);\r
-                       throw new MailException(protocol.toUpperCase() + "サーバ[" + host + "]への接続に失敗しました。", e);\r
-               }\r
-               log.info(protocol.toUpperCase() + "サーバ[" + host + "]に接続しました。");\r
-\r
-               changeFolder(INBOX_NAME);\r
-       }\r
-\r
-       /**\r
-        * Sessionに渡すPropertiesインスタンスを返します。\r
-        * APOP認証を行う場合に、"mail.pop3.apop.enable"をセットします。\r
-        * \r
-        * @return Sessionに渡すPropertiesインスタンス\r
-        */\r
-       private Properties createProperties() {\r
-               Properties prop = new Properties();\r
-               if ("apop".equalsIgnoreCase(protocol)) {\r
-                       prop.put("mail.pop3.apop.enable", "true");\r
-               }\r
-               return prop;\r
-       }\r
-\r
-       /**\r
-        * @see com.ozacc.mail.fetch.FetchMailPro#disconnect()\r
-        */\r
-       public synchronized void disconnect() throws MailException {\r
-               try {\r
-                       closeCurrentFolderIfOpen();\r
-               } finally {\r
-                       if (isConnected()) {\r
-                               log.debug(protocol.toUpperCase() + "サーバ[" + host + "]との接続を切断します。");\r
-                               try {\r
-                                       store.close();\r
-                                       store = null;\r
-                               } catch (MessagingException e) {\r
-                                       throw new MailException("サーバ[" + host + "]との接続切断に失敗しました。", e);\r
-                               }\r
-                       }\r
-               }\r
-               log.info(protocol.toUpperCase() + "サーバ[" + host + "]との接続を切断しました。");\r
-       }\r
-\r
-       /**\r
-        * 現在のメッセージフォルダをクローズします。\r
-        * \r
-        * @throws MailException メッセージフォルダのクローズに失敗した場合\r
-        */\r
-       private void closeCurrentFolderIfOpen() throws MailException {\r
-               if (currentFolder != null && currentFolder.isOpen()) {\r
-                       log.debug("メッセージフォルダ[" + currentFolder.getName() + "]をクローズします。");\r
-                       try {\r
-                               currentFolder.close(true);\r
-                       } catch (MessagingException e) {\r
-                               log.error("メッセージフォルダ[" + currentFolder.getName() + "]のクローズに失敗しました。", e);\r
-                               throw new MailException("メッセージフォルダ[" + currentFolder.getName() + "]のクローズに失敗しました。",\r
-                                               e);\r
-                       }\r
-                       log.debug("メッセージフォルダ[" + currentFolder.getName() + "]をクローズしました。");\r
-                       currentFolder = null;\r
-               }\r
-       }\r
-\r
-       /**\r
-        * @see com.ozacc.mail.fetch.FetchMailPro#changeFolder(java.lang.String)\r
-        */\r
-       public synchronized void changeFolder(String folderName) throws MailException {\r
-               if (!isConnected()) {\r
-                       log.warn("メールサーバに接続されていません。");\r
-                       return;\r
-               }\r
-\r
-               closeCurrentFolderIfOpen();\r
-               log.debug("メッセージフォルダ[" + folderName + "]をオープンします。");\r
-               try {\r
-                       currentFolder = store.getFolder(folderName);\r
-                       currentFolder.open(Folder.READ_WRITE);\r
-               } catch (MessagingException e) {\r
-                       log.error("メッセージフォルダ[" + folderName + "]のオープンに失敗しました。", e);\r
-                       throw new MailException("メッセージフォルダ[" + folderName + "]のオープンに失敗しました。", e);\r
-               }\r
-               log.debug("メッセージフォルダ[" + folderName + "]をオープンしました。");\r
-       }\r
-\r
-       /**\r
-        * @see com.ozacc.mail.fetch.FetchMailPro#getMailCount()\r
-        */\r
-       public int getMailCount() throws MailException {\r
-               checkIfCurrentFolderIsOpen();\r
-               try {\r
-                       return currentFolder.getMessageCount();\r
-               } catch (MessagingException e) {\r
-                       throw new MailFetchException("メール数の取得に失敗しました。", e);\r
-               }\r
-       }\r
-\r
-       /**\r
-        * メールサーバに接続されていて、フォルダが操作できる状態かどうか調べます。\r
-        * フォルダが操作できる状態にない場合、NotConnectedExceptionをスローします。\r
-        * \r
-        * @throws NotConnectedException\r
-        */\r
-       private void checkIfCurrentFolderIsOpen() throws NotConnectedException {\r
-               if (currentFolder == null || !currentFolder.isOpen()) {\r
-                       throw new NotConnectedException(protocol.toUpperCase() + "サーバ[" + host + "]に接続されていません。");\r
-               }\r
-       }\r
-\r
-       /**\r
-        * @see com.ozacc.mail.fetch.FetchMailPro#getMail(int)\r
-        */\r
-       public ReceivedMail getMail(int num) throws MailException {\r
-               return getMail(num, false);\r
-       }\r
-\r
-       /**\r
-        * @see com.ozacc.mail.fetch.FetchMailPro#getMail(int, boolean)\r
-        */\r
-       public ReceivedMail getMail(int num, boolean delete) throws MailException {\r
-               MimeMessage mimeMessage = getMessage(num);\r
-               try {\r
-                       mimeMessage.setFlag(Flags.Flag.DELETED, delete);\r
-                       log.debug(num + "番目のメッセージにDELETEDフラグをセットしました。");\r
-               } catch (MessagingException e) {\r
-                       throw new MailException("DELETEDフラグのセットに失敗しました。", e);\r
-               }\r
-               return mailConverter.convertIntoMail(mimeMessage);\r
-       }\r
-\r
-       /**\r
-        * @see com.ozacc.mail.fetch.FetchMailPro#getMails(boolean)\r
-        */\r
-       public ReceivedMail[] getMails(boolean delete) throws MailException {\r
-               MimeMessage[] mimeMessages = getMessages(delete);\r
-               return mailConverter.convertIntoMails(mimeMessages);\r
-       }\r
-\r
-       /**\r
-        * @see com.ozacc.mail.fetch.FetchMailPro#getMessage(int)\r
-        */\r
-       public synchronized MimeMessage getMessage(int num) throws MailException {\r
-               checkIfCurrentFolderIsOpen();\r
-               try {\r
-                       return (MimeMessage)currentFolder.getMessage(num);\r
-               } catch (MessagingException e) {\r
-                       log.error("メッセージの取得に失敗しました。", e);\r
-                       throw new MailFetchException("メッセージの取得に失敗しました。", e);\r
-               }\r
-       }\r
-\r
-       public synchronized MimeMessage[] getMessages(boolean delete) throws MailException {\r
-               checkIfCurrentFolderIsOpen();\r
-               try {\r
-                       Message[] messages = currentFolder.getMessages();\r
-                       if (log.isInfoEnabled()) {\r
-                               if (messages.length > 0) {\r
-                                       log.info(messages.length + "通のメールを受信します。");\r
-                               } else {\r
-                                       log.info("受信するメールはありません。");\r
-                               }\r
-                       }\r
-                       // SEENフラグを立てる\r
-                       currentFolder.setFlags(messages, new Flags(Flags.Flag.SEEN), true);\r
-                       // DELETEDフラグを立てる\r
-                       if (delete) {\r
-                               currentFolder.setFlags(messages, new Flags(Flags.Flag.DELETED), true);\r
-                       }\r
-                       MimeMessage[] mimeMessages = new MimeMessage[messages.length];\r
-                       for (int i = 0; i < messages.length; i++) {\r
-                               mimeMessages[i] = (MimeMessage)messages[i];\r
-                       }\r
-                       return mimeMessages;\r
-               } catch (MessagingException e) {\r
-                       log.error("メッセージの取得に失敗しました。", e);\r
-                       throw new MailFetchException("メッセージの取得に失敗しました。", e);\r
-               }\r
-       }\r
-\r
-       /**\r
-        * @see com.ozacc.mail.fetch.FetchMailPro#isConnected()\r
-        */\r
-       public boolean isConnected() {\r
-               return store != null && store.isConnected();\r
-       }\r
-\r
-       /**\r
-        *  メールサーバのホスト名、またはIPアドレスを返します。\r
-        * \r
-        * @return  メールサーバのホスト名、またはIPアドレス\r
-        */\r
-       public String getHost() {\r
-               return host;\r
-       }\r
-\r
-       /**\r
-        * メールサーバのホスト名、またはIPアドレスをセットします。\r
-        * デフォルトは localhost です。\r
-        * \r
-        * @param host メールサーバのホスト名、またはIPアドレス\r
-        */\r
-       public void setHost(String host) {\r
-               this.host = host;\r
-       }\r
-\r
-       /**\r
-        * メールサーバの認証パスワードを返します。\r
-        * \r
-        * @return メールサーバの認証パスワード\r
-        */\r
-       public String getPassword() {\r
-               return password;\r
-       }\r
-\r
-       /**\r
-        * メールサーバの認証パスワード名をセットします。\r
-        * \r
-        * @param password メールサーバの認証パスワード\r
-        */\r
-       public void setPassword(String password) {\r
-               this.password = password;\r
-       }\r
-\r
-       /**\r
-        * メール受信に使用するプロトコロルをセットします。\r
-        * \r
-        * @return プロトコル\r
-        */\r
-       public String getProtocol() {\r
-               return protocol;\r
-       }\r
-\r
-       /**\r
-        * メール受信に使用するプロトコロルをセットします。\r
-        * 現在サポートされているプロトコルは、「pop3」と「imap」の二つです。\r
-        * デフォルトは「pop3」です。\r
-        * <p>\r
-        * POP3サーバへの認証をAPOPで行いたい場合は、プロトコル名ではありませんが、\r
-        * 「apop」を指定してください。APOP認証を使用するには、JavaMail 1.3.2以降が必要です。\r
-        * \r
-        * @param protocol プロトコル\r
-        */\r
-       public void setProtocol(String protocol) {\r
-               this.protocol = protocol;\r
-       }\r
-\r
-       /**\r
-        * @return 認証ユーザ名\r
-        */\r
-       public String getUsername() {\r
-               return username;\r
-       }\r
-\r
-       /**\r
-        * メールサーバの認証ユーザ名をセットします。\r
-        * \r
-        * @param username 認証ユーザ名\r
-        */\r
-       public void setUsername(String username) {\r
-               this.username = username;\r
-       }\r
-\r
-       /**\r
-        * @return ポート番号\r
-        */\r
-       public int getPort() {\r
-               return port;\r
-       }\r
-\r
-       /**\r
-        * メール受信に使用するポート番号をセットします。\r
-        * プロトコルに応じたポート番号が自動的に使用されますので、通常ここでポート番号をセットする必要はありません。\r
-        * \r
-        * @param port ポート番号\r
-        */\r
-       public void setPort(int port) {\r
-               this.port = port;\r
-       }\r
-\r
-       /**\r
-        * JavaMailのデバッグが有効かどうか判定します。\r
-        * \r
-        * @return JavaMailのデバッグが有効な場合 ture\r
-        */\r
-       public boolean isJavaMailLogEnabled() {\r
-               return javaMailLogEnabled;\r
-       }\r
-\r
-       /**\r
-        * JavaMailのデバッグを有効にするかどうか指定します。\r
-        * 有効にすると、<code>System.out</code>のデバッグメッセージが出力されます。<br>\r
-        * デフォルトは無効になっています。\r
-        * \r
-        * @see javax.mail.session#setDebug(boolean)\r
-        * @param javaMailLogEnabled The javaMailLogEnabled to set.\r
-        */\r
-       public void setJavaMailLogEnabled(boolean javaMailLogEnabled) {\r
-               this.javaMailLogEnabled = javaMailLogEnabled;\r
-       }\r
-\r
-       /**\r
-        * MailConveterインターフェースの実装インスタンスをセットします。\r
-        * デフォルトでは、MailConverterImplが使用されます。\r
-        * \r
-        * @see com.ozacc.mail.fetch.MailConveter\r
-        * @see com.ozacc.mail.fetch.impl.MailConveterImpl\r
-        * @param mailConverter MailConveterインターフェースの実装インスタンス\r
-        */\r
-       public void setMailConverter(MailConverter mailConverter) {\r
-               this.mailConverter = mailConverter;\r
-       }\r
-}
\ No newline at end of file