View Javadoc

1   /****************************************************************
2    * Licensed to the Apache Software Foundation (ASF) under one   *
3    * or more contributor license agreements.  See the NOTICE file *
4    * distributed with this work for additional information        *
5    * regarding copyright ownership.  The ASF licenses this file   *
6    * to you under the Apache License, Version 2.0 (the            *
7    * "License"); you may not use this file except in compliance   *
8    * with the License.  You may obtain a copy of the License at   *
9    *                                                              *
10   *   http://www.apache.org/licenses/LICENSE-2.0                 *
11   *                                                              *
12   * Unless required by applicable law or agreed to in writing,   *
13   * software distributed under the License is distributed on an  *
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
15   * KIND, either express or implied.  See the License for the    *
16   * specific language governing permissions and limitations      *
17   * under the License.                                           *
18   ****************************************************************/
19  
20  
21   
22  package org.apache.james.fetchmail;
23  
24  import javax.mail.Folder;
25  import javax.mail.MessagingException;
26  import javax.mail.Store;
27  
28  /**
29   * <p>Class <code>StoreProcessor</code> connects to a message store, gets the
30   * target Folder and delegates its processing to <code>FolderProcessor</code>.</p>
31   * 
32   * <p>Creation Date: 27-May-03</p>
33   */
34  public class StoreProcessor extends ProcessorAbstract
35  {
36      /**
37       * Constructor for StoreProcessor.
38       * @param account 
39       */
40      protected StoreProcessor(Account account)
41      {
42          super(account);        
43      }
44      
45      /**
46       * Method process connects to a Folder in a Message Store, creates a
47       * <code>FolderProcessor</code> and runs it to process the messages in
48       * the Folder.
49       * 
50       * @see org.apache.james.fetchmail.ProcessorAbstract#process()
51       */
52      public void process() throws MessagingException
53      {
54          Store store = null;
55          Folder folder = null;
56  
57          StringBuffer logMessageBuffer =
58              new StringBuffer("Starting fetching mail from server '");
59          logMessageBuffer.append(getHost());
60          logMessageBuffer.append("' for user '");
61          logMessageBuffer.append(getUser());
62          logMessageBuffer.append("' in folder '");
63          logMessageBuffer.append(getJavaMailFolderName());
64          logMessageBuffer.append("'");
65          getLogger().info(logMessageBuffer.toString());
66  
67          try
68          {
69              // Get a Store object
70              store = getSession().getStore(getJavaMailProviderName());
71  
72              // Connect
73              if (getHost() != null
74                  || getUser() != null
75                  || getPassword() != null)
76                  store.connect(getHost(), getUser(), getPassword());
77              else
78                  store.connect();
79  
80              // Get the Folder
81              folder = store.getFolder(getJavaMailFolderName());
82              if (folder == null)
83                  getLogger().error(getFetchTaskName() + " No default folder");
84  
85              // Process the Folder
86              new FolderProcessor(folder, getAccount()).process();
87  
88          }
89          catch (MessagingException ex)
90          {
91              getLogger().error(
92                  "A MessagingException has terminated processing of this Folder",
93                  ex);
94          }
95          finally
96          {
97              try
98              {
99                  if (null != store && store.isConnected())
100                     store.close();
101             }
102             catch (MessagingException ex)
103             {
104                 getLogger().error(
105                     "A MessagingException occured while closing the Store",
106                     ex);
107             }
108             logMessageBuffer =
109                 new StringBuffer("Finished fetching mail from server '");
110             logMessageBuffer.append(getHost());
111             logMessageBuffer.append("' for user '");
112             logMessageBuffer.append(getUser());
113             logMessageBuffer.append("' in folder '");
114             logMessageBuffer.append(getJavaMailFolderName());
115             logMessageBuffer.append("'");
116             getLogger().info(logMessageBuffer.toString());
117         }
118     }
119 
120 }