package gui; /** * */ import java.awt.Desktop; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; import java.util.Iterator; import javax.swing.JOptionPane; import parser.ParseToString; import container.ContainerFile; import container.ContainerObject; import ctex.Main; import database.Db; public class Mail { /** * * @param theDb * @param obj */ Mail (Db theDb, ContainerObject obj){ Desktop desktop = null; String mailTo = "?BODY="+ ((new ParseToString(theDb, obj)).getXtx()); mailTo = mailTo.concat("&subject=CrossTeX " + obj.getKey() + " by CrossRefX"); //File anhaengen Iterator<ContainerFile> i = theDb.getAllFiles(obj.getId()).iterator(); while (i.hasNext()){ File f = theDb.getFile(i.next().getId()); mailTo = mailTo.concat("&attachment="+f.getAbsolutePath()); } mailTo = mailTo.concat("&attachment="+getXtxLink(theDb, obj)); URI uriMailTo = null; if (Desktop.isDesktopSupported()) { desktop = Desktop.getDesktop(); // Now enable buttons for actions that are supported. } try { uriMailTo = new URI("mailto", mailTo, null); //TODO:: Jungs so löchen macht keinen sinn. Wenn die mail noch nicht abgeschickt ist, und die Datei schon wieder weg ist? //File file = new File(CTex_Main.workspace + getFileName(obj)); //file.delete(); // //Vorschlag von Oliver: //tmp = File.createTempFile("jabrefCb", ".tmp"); //tmp.deleteOnExit(); } catch (URISyntaxException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } try { desktop.mail(uriMailTo); } catch (IOException e) { JOptionPane.showMessageDialog(null, Main.myLang.getString("mail.errormessage"), Main.myLang.getString("mail.errortitle"), JOptionPane.OK_OPTION); } } /** * * liefert die xtx Link aus dem workspace * * @param theDb * @param obj * @return */ private String getXtxLink (Db theDb, ContainerObject obj) { String dirName = Main.getIniData("MailDir") + "/"; String mailPath = getFileName(obj); //Create Folder File fDir = new File(dirName); if (!fDir.isDirectory()) { fDir.mkdir(); } // Create file File f = new File (dirName + mailPath); FileWriter fstream; try { fstream = new FileWriter(f.getAbsoluteFile()); BufferedWriter out = new BufferedWriter(fstream); out.write(((new ParseToString(theDb, obj)).getXtx())); out.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return f.getAbsolutePath(); } /** * * @param obj * @return */ private String getFileName (ContainerObject obj){ String file = null; String dummy = obj.getKey().concat("/"); while (dummy.length() != 0){ file = dummy.substring(0, dummy.indexOf("/")); dummy = dummy.substring(dummy.indexOf("/") + 1); } return file + ".xtx"; } }