1 package org.columba.mail.gui.message.command; 17 18 import java.io.BufferedInputStream ; 19 import java.io.BufferedOutputStream ; 20 import java.io.File ; 21 import java.io.FileOutputStream ; 22 import java.io.IOException ; 23 import java.io.InputStream ; 24 import java.io.OutputStream ; 25 26 import org.columba.api.command.ICommandReference; 27 import org.columba.api.command.IWorkerStatusController; 28 import org.columba.core.command.Command; 29 import org.columba.core.command.StatusObservableImpl; 30 import org.columba.core.command.Worker; 31 import org.columba.core.desktop.ColumbaDesktop; 32 import org.columba.core.util.TempFileStore; 33 import org.columba.mail.command.IMailFolderCommandReference; 34 import org.columba.mail.folder.IMailbox; 35 36 43 public class ViewMessageSourceCommand extends Command { 44 protected File tempFile; 45 46 52 public ViewMessageSourceCommand(ICommandReference reference) { 53 super(reference); 54 } 55 56 59 public void updateGUI() throws Exception { 60 ColumbaDesktop.getInstance().open(tempFile); 61 } 62 63 66 public void execute(IWorkerStatusController worker) throws Exception { 67 68 IMailFolderCommandReference r = (IMailFolderCommandReference) getReference(); 69 70 Object [] uids = r.getUids(); 71 72 IMailbox folder = (IMailbox) r.getSourceFolder(); 73 74 ((StatusObservableImpl) folder.getObservable()).setWorker(worker); 76 77 Object uid = uids[0]; 78 79 InputStream in = null; 80 OutputStream out = null; 81 82 try { 83 in = new BufferedInputStream (folder.getMessageSourceStream(uid)); 84 tempFile = TempFileStore.createTempFileWithSuffix("txt"); 85 out = new BufferedOutputStream (new FileOutputStream (tempFile)); 86 87 byte[] buffer = new byte[1024]; 88 int read; 89 90 while ((read = in.read(buffer, 0, buffer.length)) > 0) { 91 out.write(buffer, 0, read); 92 } 93 } catch (IOException ioe) { 94 ioe.printStackTrace(); 95 } finally { 96 if (in != null) { 97 try { 98 in.close(); 99 } catch (IOException ioe) { 100 } 101 } 102 103 if (out != null) { 104 try { 105 out.close(); 106 } catch (IOException ioe) { 107 } 108 } 109 } 110 } 111 } 112 | Popular Tags |