1 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 = 33 java.util.logging.Logger.getLogger("org.columba.mail.folder.mailboximport"); 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, IWorkerStatusController worker, 48 IMailbox destFolder) throws Exception { 49 FileSource mboxSource = new FileSource(file); 50 MboxMessage[] messages = MboxParser.parseMbox(mboxSource); 51 mboxSource.close(); 52 53 LOG.info("Found " + messages.length + " messages in MBOX file"); 55 SteerableInputStream in = new SteerableInputStream(new FileInputStream (file)); 56 57 worker.setProgressBarMaximum(messages.length); 58 for( int i=0; i<messages.length && !worker.cancelled(); i++) { 59 worker.setProgressBarValue(i); 60 in.setPosition(messages[i].getStart()); 61 in.setLengthLeft(messages[i].getLength()); 62 destFolder.addMessage(in); 63 counter++; 65 } 66 67 in.finalClose(); 68 } 69 70 public String getDescription() { 71 return MailResourceLoader.getString("dialog", "mailboximport", 72 "MBOX_description"); 73 } 74 } 75 | Popular Tags |