01: //The contents of this file are subject to the Mozilla Public License Version 1.1
02: //(the "License"); you may not use this file except in compliance with the
03: //License. You may obtain a copy of the License at http://www.mozilla.org/MPL/
04: //
05: //Software distributed under the License is distributed on an "AS IS" basis,
06: //WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
07: //for the specific language governing rights and
08: //limitations under the License.
09: //
10: //The Original Code is "The Columba Project"
11: //
12: //The Initial Developers of the Original Code are Frederik Dietz and Timo Stich.
13: //Portions created by Frederik Dietz and Timo Stich are Copyright (C) 2003.
14: //
15: //All Rights Reserved.
16:
17: package org.columba.mail.folder.mailboximport;
18:
19: import java.io.File;
20: import java.io.FileInputStream;
21:
22: import org.columba.api.command.IWorkerStatusController;
23: import org.columba.core.io.SteerableInputStream;
24: import org.columba.mail.folder.IMailbox;
25: import org.columba.mail.folder.mbox.MboxMessage;
26: import org.columba.mail.folder.mbox.MboxParser;
27: import org.columba.mail.util.MailResourceLoader;
28: import org.columba.ristretto.io.FileSource;
29:
30: public class MBOXImporter extends AbstractMailboxImporter {
31:
32: private static final java.util.logging.Logger LOG = java.util.logging.Logger
33: .getLogger("org.columba.mail.folder.mailboximport"); //$NON-NLS-1$
34:
35: public MBOXImporter() {
36: super ();
37: }
38:
39: public MBOXImporter(IMailbox destinationFolder, File[] sourceFiles) {
40: super (destinationFolder, sourceFiles);
41: }
42:
43: public int getType() {
44: return TYPE_FILE;
45: }
46:
47: public void importMailboxFile(File file,
48: IWorkerStatusController worker, IMailbox destFolder)
49: throws Exception {
50: FileSource mboxSource = new FileSource(file);
51: MboxMessage[] messages = MboxParser.parseMbox(mboxSource);
52: mboxSource.close();
53:
54: LOG.info("Found " + messages.length + " messages in MBOX file"); //$NON-NLS-1$ //$NON-NLS-2$
55:
56: SteerableInputStream in = new SteerableInputStream(
57: new FileInputStream(file));
58:
59: worker.setProgressBarMaximum(messages.length);
60: for (int i = 0; i < messages.length && !worker.cancelled(); i++) {
61: worker.setProgressBarValue(i);
62: in.setPosition(messages[i].getStart());
63: in.setLengthLeft(messages[i].getLength());
64: destFolder.addMessage(in);
65: // this is necessary to do!
66: counter++;
67: }
68:
69: in.finalClose();
70: }
71:
72: public String getDescription() {
73: return MailResourceLoader.getString("dialog", "mailboximport",
74: "MBOX_description");
75: }
76: }
|