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 }